我遇到过这一个,不明白.
#define IDEBUG(a...)
Run Code Online (Sandbox Code Playgroud)
"(a ......)"是什么意思?
这是一个可变的宏.
从链接页面逐字引用:
可以声明宏接受可变数量的参数,就像函数一样.定义宏的语法类似于函数的语法.这是一个例子:
Run Code Online (Sandbox Code Playgroud)#define eprintf(...) fprintf (stderr, __VA_ARGS__)这种宏叫做可变参数.调用宏时,在最后一个命名参数(此宏没有)之后的参数列表中的所有标记(包括任何逗号)都将成为变量参数.这个令牌序列替换宏体中出现的标识符VA_ARGS.因此,我们有这个扩展:
Run Code Online (Sandbox Code Playgroud)eprintf ("%s:%d: ", input_file, lineno) ==> fprintf (stderr, "%s:%d: ", input_file, lineno)
对于该特定形式,请在页面中进一步引用:
如果您的宏很复杂,您可能需要一个更具描述性的变量参数名称
__VA_ARGS__.CPP允许这作为扩展.您可以在"..."之前写一个参数名称; 该名称用于变量参数.可以编写上面的eprintf宏Run Code Online (Sandbox Code Playgroud)#define eprintf(args...) fprintf (stderr, args)
| 归档时间: |
|
| 查看次数: |
595 次 |
| 最近记录: |