宏定义中#与##

来源:互联网 发布:远程网络教育要考试吗 编辑:程序博客网 时间:2024/04/17 01:48
原创博文:http://biancheng.dnbcw.info/c/237096.html
一、例子:
#define A(x) T_##x
#define B(x) #@x
#define C(x) #x

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