博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
可变参数的宏注意事项
阅读量:6416 次
发布时间:2019-06-23

本文共 544 字,大约阅读时间需要 1 分钟。

hot3.png

标准 C 只支持可变参数的函数,意味着函数的参数是不固定的,例如 printf()函数的原型为:

int printf( const char *format [, argument]... );
而在 GNU C 中,宏也可以接受可变数目的参数,例如:
#define pr _ debug(fmt,arg...) \
printk(fmt,##arg)
这里 arg 表示其余的参数可以是零个或多个,这些参数以及参数之间的逗号构成 arg 的值,在宏扩展
时替换 arg,例如下列代码:
pr _ debug("%s:%d",filename,line)
会被扩展为:
printk("%s:%d", filename, line)
使用“##”的原因是处理 arg 不代表任何参数的情况,这时候,前面的逗号就变得多余了。使用“##”
之后,GNU C 预处理器会丢弃前面的逗号,这样,代码:
pr _ debug("success!\n")
会被正确地扩展为:
printk("success!\n")
而不是:
printk("success!\n",)

此篇文章来源于华清远见文档

 

转载于:https://my.oschina.net/u/920274/blog/2872758

你可能感兴趣的文章
protobuf
查看>>
4.Java基础复习--Set
查看>>
七:Mysql的乐观锁与悲观锁机制
查看>>
CSS滤镜及渐变 (filter样式表属性)
查看>>
调用上面的@InitBinder 解决客户端上传时间参数转换的问题
查看>>
net.sf.json.JSONException: There is a cycle in the hierarchy异常,解决方法
查看>>
Android自动化测试方向
查看>>
QT中常用数据之间转换
查看>>
向量的内积,长度,正交性
查看>>
app包中的fragment和v4包中的fragment的使用的区别
查看>>
Http协议与缓存
查看>>
监测超过特定内存阀值进程并结束
查看>>
Linux Centos 查询信息
查看>>
android adb命令
查看>>
python “双”稀疏矩阵转换为最小联通量“单”矩阵
查看>>
揭秘天猫双11背后:20万商家600万张海报,背后只有一个鹿班
查看>>
重置mysq root密码脚本
查看>>
我的友情链接
查看>>
MHA配置参数
查看>>
深入理解Lock
查看>>