2011/12/19

続:もうMacしか愛せない

たまには仕事っぽい話しも。中身には触れられないけど。


仕事で久々に開発。っていうかWindows7&64Bit対応。

ソースコードの管理ができてないのはよくある話ですが、
今回はMSの仕様で嫌になった話。



Win32/64はAPI周りでINT_PTRという型を引数に取る。

これはintのポインタではなく、
現在の環境のポインタと同じ長さの整数。なので変数。アドレス型ではない。
WIN32が定義されていれば32bit、WIN64なら64bit。

これだけならまだいいんだけど、
PUINT_PTRとかが絡むと面倒。
PUINT_PTRUINT_PTRのポインタ。

だけども&UINT_PTRでキャストしても通らない。
typedefされているため、別の型として扱われるのだ。えー。

実質UINT_PTRのポインタであることは間違いないので、
reinterpret_cast<PINT_PTR>すればいいんだろうけど、キモイ。

_PTRって書き方がそもそもキモい。
それを&で参照できるのに、コンパイラがWIN32/WIN64の都合で、
castを強制されるのが気持ち悪い。

型チェックしておこうかと思ったけど、それもまたキモいな。

まぁいいかこれで。

ちなみにLONG_PTRはINT_PTRと一緒。えー。


Objective-Cをやってると、VCのWIN32/64対応はガサツすぎて泣きたくなる。

0 件のコメント:

コメントを投稿