xx6625303 发表于 2015-2-22 16:46:11

请问一下宏定义的问题,hdc这个句柄

如题,我用VC6.0知道了HDC宏定义#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name      这后面的定义是什么意思呢?我记得学C语言的时候,宏定义说到些,但貌似没弄明白,就是这些定义的结构体,啥意思哦

air-C 发表于 2015-2-23 21:31:25

同样不明白,帮顶

santaclaus 发表于 2015-2-24 12:40:04

本帖最后由 santaclaus 于 2015-2-24 12:44 编辑

#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name
int main()
{
       //将HDC代入宏中,上面name将用HDC替换。##是连接符,代入后“name##__”变成“HDC__”,最终的宏展开,见后面的等价部分。
      DECLARE_HANDLE(HDC);

      HDC hdc;
      return 0;
}

等价于:
int main()
{
      struct HDC__
      {
         int unused;
      };

       typedef struct HDC__ *HDC; //HDC是个指针,是“HDC__”这样一个结构体的指针

      HDC hdc;
      
      return 0;
}

智商是硬伤 发表于 2015-9-11 09:07:23

{:7_146:}

丹小怪 发表于 2016-8-10 14:16:18

都差不多吧
页: [1]
查看完整版本: 请问一下宏定义的问题,hdc这个句柄