C语言#define宏中省略号的含义? 2009-08-18 09:27:05

分类: 嵌入式

在LDD第三版第4章中给出如下宏定义,请问args后面的省略号(...)有什么作用?在args与省略号之间加入逗号有什么影响?

#define PDEBUG(fmt, args...) printk( KERN_DEBUG "scull: " fmt, ## args)

参与了一些资料之后才明白:宏定义中的省略号表示一串可变的参数, 这一串参数可用args加以引用.比如, 代码

PDEBUG("a=%d, b=%d", a, b);

在展开宏时, 由于args = a, b, 故展开后变为

printk( KERN_DEBUG "scull: " "a=%d, b=%d", a, b);

宏定义中的省略号就是指一串数目不限的参数列表,前面用args只有为了后面引用这串参数.如果在args与省略号之间加入逗号,就变成args = a, 而省略号指向的那串参数只包含一个b.

C语言#define宏中省略号的含义?相关推荐

  1. C语言中#define宏中省略号作用,例子:#define __stringify_1(x...) #x

    学习Linux misc驱动时遇到以下函数定义: 代码路径:include\linux\stringify.h #ifndef __LINUX_STRINGIFY_H #define __LINUX_ ...

  2. 大牛深入浅出讲解C语言#define宏定义应用及使用方法

    在C语言中,我们使用#define来定义宏.在C程序编译的预处理阶段,预处理器会把宏定义的符号替换成指定的文本. 不带参数的宏 关于宏最常见的就是用来定义数值常量的名称,即没有参数的宏定义,采用如下形 ...

  3. 深入浅出讲解C语言#define宏定义应用及使用方法

    在C语言中,我们使用#define来定义宏.在C程序编译的预处理阶段,预处理器会把宏定义的符号替换成指定的文本. 不带参数的宏 关于宏最常见的就是用来定义数值常量的名称,即没有参数的宏定义,采用如下形 ...

  4. c语言 define宏名称if(参数),iOS深思篇 | 宏定义

    一. 简介 宏是一种批量处理的称谓,简单来说就是根据定义好的规则替换一定的文本.替换过程在程序编译期,也因此大量使用宏会造成编译时间变长:而且替换过程不进行类型安全检查;还需要注意"边缘效应 ...

  5. 深入理解C语言——#define宏和枚举的区别

    (1)从处理过程的角度看: #define宏是由编译预处理器在预编译处理时处理的,而且只做简单的字符串的替换.枚举常量则是在编译的时候确定其值的. (2)从调试的角度看: 通常情况下,在编译器里,可以 ...

  6. c语言 define宏名称if(参数),宏编程基础内容

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 使用过word软件可能知道里面有个功能就是宏录制,可以录制一系列的操作,然后在之后的工作中,快速插入一组操作,减少重复性 ...

  7. 关于C语言define宏定义字符串常量

    1.问题由来: 本人一直以为宏对于字符串的处理也是直接在预处理时进行替换:但是最近在工作中遇到了字符串宏+1的情况:于是彻底的颠覆了以前的思维:于是乎进行测试验证得出以下结果. 2.测试代码 /*测试 ...

  8. C语言#define宏定义可能注意不到的地方

    #define使用的核心:直接替换 我也觉得自己很清楚这一点,但看到这一道输出程序片段结果题,还是懵了.大家也可以在不看我下方答案的情况下,自己做一下,题目如下: #include<stdio. ...

  9. C语言define高级用法大全

    今天在看代码时,突然发现很多define的用法看不懂,故在此总结一下,顺便吐槽一下,C语言的宏复杂起来真的很难看懂. 不信的去看下这个的源码:[C语言开源库]lw_oopc:轻量级的C语言面向对象编程 ...

  10. C++/C 宏定义(define)中# ## 的含义(转)

    参考:http://www.cnblogs.com/little-ant/p/3463080.html http://hi.baidu.com/kiraversace/item/1148ee05714 ...

最新文章

  1. PostgreSQL_row_number() over()
  2. 4.9.3 方法注释
  3. Windows从命令行创建文本文件的两种方式
  4. mysql表结构定义_Mysql表结构定义及相关语法
  5. 学python报什么班好?Python培训班都有哪些学习方式?
  6. AMS磁编码器:AS5048与AS5047区别,伺服电机闭环系统位置反馈
  7. Android模拟器所支持的OpenGL ES扩展
  8. 计算机网络性能(2)
  9. 植树问题python_《程序员的数学》思考题(一)
  10. 【中土世界】萨鲁曼小传
  11. 解决Keepalived主备都含有VIP
  12. 帕金森病的功能性脑连接障碍:一项5年的纵向研究
  13. php获取用户和服务器ip及其地理位置详解
  14. Excel 合并单元格 ,换行,过滤空单元格
  15. win10关闭自动更新(针对已经关闭windows update项,但系统仍自动更新的问题)
  16. 英语水平不强,如何写出高质量英文论文?五个英语写作辅助和润色软件!
  17. MySQL-LOCATE和FIND_IN_SET函数
  18. ESP8266开发之旅 进阶篇⑩ sniffer混杂模式,监听802.11帧,黑科技基础
  19. MYSQL全文检索 MATCH AGAINST 转为 SQLalchemy
  20. 区块链技术与应用(赵其刚等)课后题答案

热门文章

  1. calipso是什么意思_porridge是什么意思_porridge的翻译_音标_读音_用法_例句_爱词霸在线词典...
  2. 在水处理控制系统中正确运用信号隔离器
  3. jenkins更换清华(国内)插件源不生效的问题
  4. 永恒的风控:大宗商品贸易融资背后的核心风险该如何规避?
  5. 微信停止苹果手机服务器,IOS13微信杀后台终极解决办法亲测有效
  6. 八段数码管数字显示实验c语言,八段数码管显示实验.doc
  7. Guava-Splitter
  8. Python|美国婴儿姓名分析
  9. android 音频转mp3格式,音频 (六)- 安卓 ndk 将 pcm 转换为 mp3
  10. Marshmallow 的用法