- ベストアンサー
HDCのマクロ定義
VC++を勉強しているのです。 HDCハンドルの定義を遡って確認したら、インクルードファイルWINDEF.HとWINNT.Hに次のような定義を見かけました。 DECLARE_HANDLE(HDC); #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name そのマクロ定義の解析と意味、良く分からないのです。何方が教えて頂けるでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
#define JOIN(a,b) a##b と定義して JOIN(0x,0123) と書くと 0x0123 と書いたのと同じになるのは判りますか? #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name と定義して DECLARE_HANDLE(HDC); と書くと struct HDC__ { int unused; }; typedef struct HDC__ *HDC; と書いたのと同じになります。
お礼
ご丁寧に回答して頂き誠にありがとうございます。 とても参考になりました。