[信息] C中符号#和##的作用

[复制链接]
948|2
 楼主| Larm1 发表于 2016-4-22 11:13 | 显示全部楼层 |阅读模式


符号#和##的作用
1. 仅用于预处理宏扩展,只能在宏定义中使用;
2. #用于将参数转换为字符串;
3 ##用于将两个宏参数连接在一起;
4. 转换顺序:在展开当前宏参数时,若形参中无#和##时,展开宏参数再展开宏;若有在不进行宏参数展开;

#define CONNECT(a,b)         a##b  
#define STR(a)                           #a  
#define TEST(a)                         STR(a)

则:
printf("STR(CONNECT(con,2))=%s\n", STR(CONNECT(con,2)));
printf("TEST(CONNECT(con,2))=%s\n", TEST(CONNECT(con,2)));

输出是:
STR(CONNECT(con,2))=CONNECT(con, 2)
TEST(CONNECT(con,2))=con2
FireRiver9 发表于 2016-4-22 19:07 | 显示全部楼层
#是把宏参数变为一个字符串,##是把两个宏参数连接在一起。
Ryze 发表于 2016-4-22 21:49 | 显示全部楼层
预处理运算符# #为宏扩展提供了一种连接实际变元的手段。如果替换文本中的参数用 # #相
连,那么参数就被实际变元替换, # #与前后的空白符被删除,并对替换后的结果重新扫描
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

389

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部