有没有办法#define
一个参数长度可变的宏?
#define CALL(ar1, ar2, ar3)
do something
#endif
在C代码中
CALL(0);
CALL(0,1);
CALL(0,1,2)
全部调用上面的CALL宏。如果未使用ar2,ar3,则预处理器只会忽略带有ar2或ar3的行。
答案 0 :(得分:5)
是的,请看一下这个:http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html
关键词是__VA_ARGS__
(Variadic Macros):
宏可以被声明为接受可变数量的参数,就像函数一样。定义宏的语法类似于函数的语法。这是一个例子:
#define eprintf(...) fprintf (stderr, __VA_ARGS__)