もしCスタイルのキャストを採用するなら、それよりもC++/D形式のスタイルがいいのではないかと思います。
C++はstatic_cast<型>(式)などで、Dはcast(型)式という形です。
コード:
RECT *pRect1, *pRect2;
void *ptr;
pRect1 = static_cast<RECT *>(ptr); /* C++ */
pRect2 = cast(RECT *)ptr; /* D */
ようするにCスタイルのキャストだけは勘弁してくれということです。あとからコードを見たときうっかり見過ごしてしまいそうなほどCスタイルキャストは目立ちません。
もちろんxsb007さんやhiraさんのCast関数の引数というのも悪くありません。
それどころか今1番いいんじゃないかと考えているのはhiraさんのAsです。私は括弧は要らなさそうに思うのでCast ptr As *RECTはどうかと思います。
ところでC#にはキャストの一種としてasがあり、構文は式 as 型でhiraさんの案に偶然ながら近いです。あちゃ、これでもいいような気もしてくる。
コード:
pRect = Cast(ptr As *RECT)
pRect = Cast ptr As *RECT
pRect = ptr As *RECT