c语音 # ## 以及可变参数使用记录
来源:互联网 发布:java中的通配符 编辑:程序博客网 时间:2024/06/05 02:02
#define debug(format, ...) fprintf (stderr, format, __VA_ARGS__)等价于
#define debug(format, args...) fprintf (stderr, format, args)这和上面举的那个定义的宏例子是完全一样的,但是这么写可读性更强并且更容易进行描述。
在标准C里,你不能省略可变参数,但是你却可以给它传递一个空的参数
debug ("A message")
debug ("A message",)
GNU CPP在这种情况下可以让你完全的忽略可变参数。在上面的例子中,编译器仍然会有问题(complain),因为宏展开后,里面的字符串后面会有个多余的逗号。
为了解决这个问题,CPP使用一个特殊的‘##’操作。书写格式为:
#define debug(format, ...) fprintf (stderr, format, ## __VA_ARGS__)
这里,如果可变参数被忽略或为空,‘##’操作将使预处理器(preprocessor)去除掉它前面的那个逗号。如果你在宏调用时,确实提供了一些可变参数,GNU CPP也会工作正常,它会把这些可变参数放到逗号的后面。象其它的pasted macro参数一样,这些参数不是宏的扩展。
0 0
- c语音 # ## 以及可变参数使用记录
- C语言:可变参数宏以及##和#符的使用
- C 可变参数的使用
- C可变参数的使用
- C 参数可变宏使用
- 关于C中可变参数的记录
- 使用可变参数的方法记录log
- C语言中可变参数的使用
- [C#]中的可变参数定义和使用
- C,C++中使用可变参数
- C语言中可变参数的使用
- C,C++中使用可变参数
- C,C++中使用可变参数
- C,C++中使用可变参数
- C,C++中使用可变参数
- C,C++中使用可变参数
- C,C++中使用可变参数
- C语言中 可变参数使用
- 码神学Java第一天
- Java面试知识点
- sdut第八届校赛--简单题
- 如何提高测试人员的地位
- Spring-IoC对象管理
- c语音 # ## 以及可变参数使用记录
- change backgroud color of the windows in ubuntu
- VC++动态链接库编程之MFC DLL
- Intent的用法
- 网络第一课
- sdut第八届校赛--小厚的三角形
- 数据结构复习——二叉树的表示及遍历
- 《剑指offer》-最小的K个数
- 寻址方式