Chinaunix首页 | 论坛 | 博客
  • 博客访问: 169363
  • 博文数量: 60
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 638
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-26 10:59
个人简介

喜欢coding,因为那是一件伟大的事情,是将无生命的IC赋予灵魂的过程,让我拥有了和上帝一样的成就感。(w1c2g3@163.com)

文章分类

全部博文(60)

文章存档

2017年(7)

2016年(41)

2015年(1)

2014年(4)

2013年(7)

我的朋友

分类: LINUX

2013-03-17 22:04:24

ISO C中定义的可变参数宏:
  1. #define debug(format, ...) fprintf(stderr, format, __VA_ARGS__)
GCC支持更复杂的形式,可以给可变参数取个名字:
  1. #define debug(format, args...) fprintf(stderr, format, args)
有了名字,代码显得更具有可读性(include/linux/kernel.h):
  1. #define pr_info(fmt, arg...) printk(KERN_INFO fmt, ##arg)
使用“##”的原因是处理arg 不代表任何参数的情况,前面的逗号就变得多余了。使用“##”之后,GCC预处理器会丢弃前面的逗号,这样,代码:
pr_info("success!\n")
会被正确地扩展为:
printk(KERN_INFO "success!\n")
而不是:
printk(KERN_INFO "success!\n",)


阅读(1579) | 评论(0) | 转发(0) |
1

上一篇:Linux 内核中的 GCC 特性

下一篇:wait queue

给主人留下些什么吧!~~