#define VOID void

VC++ を触り始めて 8 年ぐらい。

いまだにわからないのは、何故

#define VOID void

という定義があるのか。

僕の推測。

  • Microsoft はすべて大文字の型定義が好き
    • INT とか SHORT とか
  • また、ポインタ型の定義も好き
    • PINT とか PBOOL とか
  • それで void* を PVOID にしたい
    • そのためには void は VOID である必要がある

僕は void の方が好きだけど、TCHAR、DWORD、LPTCSTR などとあわせて使用するなら、VOID の方が Windows プログラミングっぽく統一されているような気がする。

ちなみに、VOID や INT などの型以外にも、こんなものがある。

#define NULL    0

#define FALSE               0
#define TRUE                1

#define IN
#define OUT
#define OPTIONAL

#define CALLBACK    __stdcall
#define WINAPI      __stdcall
#define WINAPIV     __cdecl
#define APIENTRY    WINAPI
#define APIPRIVATE  __stdcall
#define PASCAL      __stdcall

#define FAR                 far
#define NEAR                near
#define CONST               const

時々 MicrosoftAPI で IN とか OUT とか見るけど、単なる目印という意味しかなかったのか。なるほど。