• ベストアンサー

HDCのマクロ定義

VC++を勉強しているのです。 HDCハンドルの定義を遡って確認したら、インクルードファイルWINDEF.HとWINNT.Hに次のような定義を見かけました。 DECLARE_HANDLE(HDC); #define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name そのマクロ定義の解析と意味、良く分からないのです。何方が教えて頂けるでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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; と書いたのと同じになります。

jorufii
質問者

お礼

ご丁寧に回答して頂き誠にありがとうございます。 とても参考になりました。

関連するQ&A