LONG_PTR
読み:ロング-ポインター
外語:LONG_PTR

 Microsoft WindowsAPIなどに使われている、Cの変数型の一つ。ポインター長のlong。
 Win32環境では32ビット長、Win64環境では64ビット長である。
目次

主な用途
 Windowsアプリケーションで、64ビット対応をする場合、longやLONGを、LONG_PTRに置き換える作業が主となる。
 例えば、WindowsのAPI関数でよく使われるLPARAM型やLRESULT型は、LONG_PTR型をtypedefしたものである。また、SetWindowLong関数の改訂版として登場したSetWindowLongPtr関数は、第3引数がそのままLONG_PTR型で定義されている。

特徴
 Microsoft Visual C++ 2008環境では、次のように定義される。

定義
 名称にPTRとあるためポインター変数のように見えるが、実際にはそうではなく整数型の変数である。従ってLONG_PTRは「ポインター長のlong」であり、これを「long長のポインター」と考えることは誤りである。
 Microsoft Visual C++ 2008環境では、次のように定義される。
 (BaseTsd.h)
 typedef [public] __int3264 LONG_PTR;
 Win32プラットフォームでは__int32Win64プラットフォームでは__int64として定義される。
 すなわち、その環境におけるポインターのビット長と同じ長さの整数型として定義されている。

過去
 現在の定義では、LONG_PTRはINT_PTRと同じである。
 かつてはINT_PTRはintのtypedef、LONG_PTRはlongのtypedefだったため、このような名前となっているのである。
 BaseTsd.hには、古い環境での定義が今も残されている。

再検索