原创博文:http://biancheng.dnbcw.info/c/237096.html
一、例子:
#define A(x) T_##x
#define B(x) #@x
#define C(x) #x
#define B(x) #@x
#define C(x) #x
假设:x=1,则有:
A(1) ==〉T_1
B(1) ==〉'1'
C(1) ==〉"1"
二、均只能在 参数宏定义 的 替换字符序列 中使用,用于链接、转换宏参数:
1.“##”
1.“##”
用于作为字节序列之间的连接符,将左右的宏参数代表的字节序列连接为一个字节序列;
如:#define HOUBE(name,value1,value1) name##value1##value1 //声明
HOUBE(hoube,1,2); ///展开为 hoube12
HOUBE(hoube,1,2); ///展开为 hoube12
2.“#”
用法:#宏参数名 。将宏参数代表的字节序列,转换为字符串常量,即添加上""。
如:#define HOUBE(name,value1,value1) name##value1##value1 //声明
HOUBE(hoube,1,2); ///展开为 "hoube12"
如:#define HOUBE(name,value1,value1) name##value1##value1 //声明
HOUBE(hoube,1,2); ///展开为 "hoube12"
3.(这个好像不行)“#@”
用法:#@宏参数名。将宏参数代表的字节序列,转换为字符常量,即添加上''。