博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

C++ - 带参数的宏

Posted on 2012-09-25 22:02  神の大司命  阅读(1209)  评论(0)    收藏  举报

1. 带参宏举例:
#define MAX(a, b) ((a) > (b) ? (a) : (b))

2. 注意,#是字符串化的意思,把跟在后面的参数转换成一个字符串:
#define FUN(a) "a"
FUN(345)将被替换成"a",因为""双引号中的字符不被当做形参。

3. 带参宏定义中#的用法:
#define STR(str) #str
这里的#用于把宏定义中的参数两端加上字符串的"",举例:
STR(my#name)将被替换成:"my#name"

4. 带参宏定义中##的用法:
#define WIDE(str) L##str
比如:WIDE("abc")就会被替换成L"abc"
#define FUN(a, b) vo##a##b()
比如:FUN(id ma, in)将会被替换成void main()