- スレを勃てるまでもないC/C++の質問はここで 24 [転載禁止]©2ch.net
24 :デフォルトの名無しさん[sage]:2015/12/02(水) 18:07:06.08 ID:tKolsFeX - >>22
> ポインタのサイズと同様にそのサイズが環境に一致することを示すため 大体あってる。ポインタを安全に整数として扱うための型が INT_PTR。 64-bit 環境の Windows だと int 型が 4 バイト、ポインタが 8 バイトで ポインタを int 型の変数に格納できない。 32-bit 環境で int 型にポインタを格納できたのはたまたま int 型とポインタ型の サイズが一致していたから。 ついでに言うと c99 で intptr_t と uintptr_t 型が仕様として定義されている。 もしも今後 Windows 以外の環境への移植を考えるならそちらを使うようにすべき。 # どうでもいいけど、Windows SDK って何か変な型を定義してるよね # DWORDLONG (UINT64, ULONG64, ULONGLONG 含めすべて uint64_t と同じ) とか # HALF_PTR (intptr_t の半分のサイズ) とか LONG_PTR (INT_PTR との違いが分からん) とか
|