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. 微信小程序一些知识点
  2. 突然关机导致git文件受损,如何处理
  3. 苹果电脑macbook怎样强制关闭软件
  4. 2020年第十一届蓝桥杯 - 省赛 - CC++大学A组 - B.既约分数
  5. 前端学习(3071):vue+element今日头条管理-删除文章失败
  6. 01 能够使用Format实现格式化输出显示
  7. IntelliJ IDEA 中使用 Lambok (注解无效问题的解决)
  8. 设计【SPFA】【差分约束】
  9. JavaWeb在线商城系统(java+jsp+servlet+MySQL+jdbc+css+js+jQuery)
  10. Navicat15安装教程超详细步骤
  11. Windows的右键菜单管理软件
  12. NO.54——基于scrapy的P站爬虫
  13. EMC测试仪器_如何实现EMC的测试工作?
  14. 微信公众号开发(十)——扫描带参数二维码事件
  15. C语言高级篇 - 1.C语言复杂表达式和指针高级应用
  16. C语言例题100道(21~40)
  17. 使用百度API实现实时公交站点查询及地图显示
  18. 疫情期间工作证明word模板下载
  19. 将PPT转换成PDF软件哪个最好用
  20. JiaoZiVideoPlayer 监听播放按钮

热门文章

  1. 曾“须知少时凌云志,曾许人间第一流”,却10平米不到屋子像极了你小时候的“梦想”
  2. @ResponseBody对象有空属性报错
  3. 产品活跃度做好很难?提高用户活跃度用对方法一点也不难
  4. 14.hibernate的入门
  5. ​​​​​​​​​​​勾股数的规律
  6. [摘录] 暴躁程序员的产生
  7. 【PYG】常用和采坑总结
  8. Word在试图打开文件时错误,如何解决
  9. 【美港探案】百度Q2:需要重新定义
  10. 路由器开启WDS模式扩展WIFI覆盖范围