c语音 # ## 以及可变参数使用记录

原创 2016年06月01日 09:48:26

#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参数一样,这些参数不是宏的扩展。


相关文章推荐

c可变参数用法 命令

  • 2011年09月04日 22:22
  • 3KB
  • 下载

C可变参数函数的教程

  • 2009年08月18日 12:07
  • 21KB
  • 下载

C/C++可变参数函数的使用

在某些应用中,我们希望一个参数的参数个数是可变d

C语言可变参数使用

  • 2016年05月16日 11:46
  • 495B
  • 下载

C/C++ 使用可变参数 & 原理

VA函数(variable argument function),参数个数可变函数,又称可变参数函数。
  • houseq
  • houseq
  • 2014年08月25日 11:49
  • 1141

[java]中的可变参数定义和使用

  • 2010年02月08日 16:31
  • 1008B
  • 下载

iOS:在objective-c 使用可变参数

objective-c中已有的一些可变参数方法:
  • houseq
  • houseq
  • 2014年08月25日 15:39
  • 6208

C,C++中使用可变参数

原文地址: http://blog.csdn.net/morewindows/article/details/6707662   可变参数即表示参数个数可以变化,可多可少,也表示参数的类型也可以变...

C 可变参数的使用

C 可变参数的使用C中的可变参数需要使用 stdarg.h 头文件。此头文件中声明了一个类型va_list和三个函数——va_start、va_arg 和 va_end。让我们先看一个求均值函数的实现...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c语音 # ## 以及可变参数使用记录
举报原因:
原因补充:

(最多只允许输入30个字)