これは、この質問に対する一種のフォローアップです。HANDLE
次のように定義されているWindows SDK 機能のデータ型WinNT.h
:
typedef void *HANDLE;
このデータ型は、ハンドルを表すために使用されます。技術的には、ハンドルはポインターではありません。これは、Win32 関数でのみ使用できる魔法の値です。void*
しかし、 typedefであるデータ型で表現されると宣言されています。
次のコードでハンドルの 16 進値を出力したい場合:
HANDLE handle = ...;
printf("%p", handle);
それは合法になりますか?