define

宏中的特殊符号

字符串化#

在宏中的参数前面使用#,参数会被预处理器转化为字符数组,即被转化为字符串,如#define exp1(s) printf("test s is:%s\n",#s); exp1(hello)将打印字符串
注意:在转换字符串时会忽略前后的空格,传入的参数名间存在空格时会自动连接两个字符串,并保留中间的空格

符号链接##

将形式参数s转化为实际的形式参数xxx#s#xxx

  • ##前后空格可有可无
  • 形式参数名为已知宏定义和已定义参数名
  • 在解析完#后解析##再进行宏展开(形式参数为宏阻止展开)

续行\

当宏无法在一行表达完整时,用\表示下一行继续宏定义

加上{}避免循环出错

在调用宏生成的两个函数加入while或if中时,会有一个不在语句块中,因此加入{}(但在加入{}后宏展开自动生成;,能编译运行但语法不对

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值