注册 登录
编程论坛 VC++/MFC

这个宏定义我看不懂啊

ant1234 发布于 2013-07-27 17:53, 616 次点击
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name
我看不懂这个,书上也找不到什么意思,看了半天没有看懂
还有vc++为什么同样一个东西要搞那么多名字啊,像 typedef WNDCLASSEXW WNDCLASSEX;
一个新手,问些弱智的问题。
3 回复
#2
yuccn2013-07-27 20:38
#define DECLARE_HANDLE(name) struct name##__ { int unused; }; typedef struct name##__ *name 这样定义之后,你以后如果想定义一个结构体,就可以比如定义

DECLARE_HANDLE(ABC);
 
这样就定价于:
struct ABC__ {
int unused;
};
typedef struct ABC__ *ABC;了。

这样一个是方便把,比如要多个这样的结构体,就可以不用重复写那么多的代码;
还有就是好读,比如HANDLE 什么的,他本身也就是void *的类型
 

#3
ant12342013-08-04 10:36
##__是什么意思,没有这个编译器说 间接寻址级别不同
#4
yuccn2013-08-05 12:02
##__ 就是连接上__ 吧

比如 #define TEST_DEF(var) var##_abc

那么  TEST_DEF(a) 就被定义为 a_abc
1