参考链接:
#、##、__VA_ARGS__和##__VA_ARGS__的作用
linux中的 VA_ARGS 宏说明

最近看到linux的一段代码,对__VA_ARGS__和##__VA_ARGS__有点疑惑,所以在网上查了一下。
linux源码如下,函数功能就不废话了:

#define module_driver(__driver, __register, __unregister, ...) \
static int __init   __driver##_init(void) \
{ \return __register(&(__driver) , ##__VA_ARGS__); \
} \
module_init(__driver##_init); \
static void __exit   __driver##_exit(void) \
{ \__unregister(&(__driver) , ##__VA_ARGS__); \
} \
module_exit(__driver##_exit);

整理表格如下:

功能
’#‘ 字符串化
‘##’ 字符连接的功能
"__VA_ARGS__’ 这个可变参数的宏是新的C99规范中新增的, 和变参函数中的...一致
‘##__VA_ARGS__’ 宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错

这里就不举例说明了,在开头的两个连接中举例很详细,不明白的网友,可以去看一下。

__VA_ARGS__和##__VA_ARGS__的区别(转载)相关推荐

  1. .NET 的 WCF 和 WebService 有什么区别?(转载)

    .NET 的 WCF 和 WebService 有什么区别?(转载) [0]问题: WCF与 Web Service的区别是什么? 和ASP.NET Web Service有什么关系? WCF与ASP ...

  2. postfix中recipient/client/sender/helo四者的区别转载

    postfix在main.cf中用下面四个做限制,那么这四者到底有什么区别? smtpd_recipient_restrictions smtpd_client_restrictions smtpd_ ...

  3. #、##、__VA_ARGS__和##__VA_ARGS__的作用

    一.#用来把参数转换成字符串 例子一: #define P(A) printf("%s:%d\n",#A,A); int main(int argc, char **argv) { ...

  4. jquery和javascript的区别(转载自脚本之家)

    jquery 就对javascript的一个扩展,封装,就是让javascript更好用,更简单,为了说明区别,下面与大家分享下JavaScript 与JQuery 常用方法比较 jquery 就对j ...

  5. arm920T与arm926的区别[转载]

    ARM920(T)与ARM926(EJ-S)还是有不少区别的,粗的讲,前者基于ARMv4架构,后者基于ARM v5架构.其中,对于程序员来说,一个大的区别是,两者指令集不一样.926(ARM v5)新 ...

  6. php中this,self,parent三个关键字之间的区别(转载)

    PHP5是一具备了大部分面向对象语言的特性的语言,比PHP4有 了很多的面向对象的特性,但是有部分概念也比较难以理解,这里我主要谈的是 this,self,parent三个关键字之间的区别.从字面上比 ...

  7. varchar和Nvarchar区别 ----转载

    varchar和Nvarchar区别 Unicode字符集就是为了解决字符集这种不兼容的问题而产生的,它所有的字符都用两个字节表示,即英文字符也是用两个字节表示 如果还为了这个纠结,就直接看看后面的解 ...

  8. git fetch和git pull之间的区别--转载

    原文地址:http://blog.csdn.net/a19881029/article/details/42245955 git fetch和git pull都可以用来更新本地库,它们之间有什么区别呢 ...

  9. 静态方法和实例化方法的区别 -转载

    这是一个经常被时时提出来的问题,很多时候我们以为理解了.懂了,但深究一下,我们却发现并不懂. 方法是我们每天都在写得,很多程序员大多都使用实例化方法,而很少使用静态方法,问原因也说不出来所以然,或者简 ...

  10. GET和POST两种基本请求方法的区别(转载)

    get与post请求的区别: 通常回答: GET在浏览器回退时是无害的,而POST会再次提交请求.GET产生的URL地址可以被Bookmark,而POST不可以.GET请求会被浏览器主动cache,而 ...

最新文章

  1. 打算看的书或正在看的书
  2. java生成和读取keystore_Java程序员必知:mybaties运行流程
  3. php转义和去掉html、php标签函数
  4. java spring-webflux netty
  5. Hadoop运维记录系列(十七)
  6. 转:javascript方法--bind()
  7. 机箱硬盘指示灯不亮_一文学会“剪不断,理还乱”的主板跳线与机箱连接
  8. Android项目实战(三十六):给背景加上阴影效果
  9. Jenkins使用及开发
  10. java中String.split()的注意事项
  11. python基础 函数
  12. 作为面试官,最近面试 Java 后端的感受!
  13. 智齿客服H5聊天链接接入及WebView不支持input file文件上传解决
  14. 新浪微博产品的细微体验,你发现了么?
  15. 图形API的简单了解
  16. Win10设置:输入法快捷键【仅保留中英切换】,其他花里胡哨快捷键全部删除
  17. 家庭宽带之IPv6网络测试
  18. 网狐精华版搭建视频教程
  19. mysql 5.7版本异常Expression #1 of ORDER BY clause is not in GROUP BY clause and contains 处理
  20. 斯尼格(SING) - 技术也将乌拉圭牛肉推到了最苛刻的市场

热门文章

  1. FragmentStatePagerAdapter写法
  2. 震精 - PostgreSQL 递归查询 - 树型数据按路径分组输出
  3. 初探Java8中的HashMap(转)
  4. struts2自己定义拦截器
  5. Docker简介(转)
  6. Apache下设置自动将http跳转到https方法
  7. 7.企业安全建设指南(金融行业安全架构与技术实践) --- 外包安全管理
  8. 17.企业应用架构模式 --- 会话状态模式
  9. 17.go 面向对象 interface
  10. 13.Linux/Unix 系统编程手册(上) -- 文件IO缓冲