天天看點

DECLARE_HANDLE 宏解析DECLARE_HANDLE 宏解析

DECLARE_HANDLE 宏解析

在程式中,經常看到這樣的語句:

DECLARE_HANDLE(HDRVR);

DECLARE_HANDLE(HDTRCV);

檢視DECLARE_HANDLE定義如下:

#ifdef STRICT

typedef void *HANDLE;

#define DECLARE_HANDLE(name) struct name##__ { int unused; };

#else

typedef PVOID HANDLE;

#define DECLARE_HANDLE(name) typedef HANDLE name #endif

預設情況下,VC/VS是開啟STRICT的,在這種情況下相當于先定義了一個結構,

struct name##__

{

int unused;

}

再typedef struct name##__ *name

其實就相當于定義了一個指向結構體name__

的指針類型name。 在非STRICT的情況下,定義name 為HANDLE類型。其實HANDLE 也是一個指針類型。

DECLARE_HANDLE(HDRVR);

DECLARE_HANDLE(HDTRCV);

是聲明HDRVR和HDTRCV 為一個指針類型。

繼續閱讀