打印
[信息]

C中符号#和##的作用

[复制链接]
806|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

粉丝