LONG_PTR
読み:ロング-ポインター
外語:LONG_PTR
Microsoft WindowsのAPIなどに使われている、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プラットフォームでは__int32、Win64プラットフォームでは__int64として定義される。
すなわち、その環境におけるポインターのビット長と同じ長さの整数型として定義されている。
過去
現在の定義では、LONG_PTRはINT_PTRと同じである。
かつてはINT_PTRはintのtypedef、LONG_PTRはlongのtypedefだったため、このような名前となっているのである。
BaseTsd.hには、古い環境での定義が今も残されている。
再検索