4
有没有一种方法来#define
宏可变长度参数?具有可变长度参数的宏
#define CALL(ar1, ar2, ar3)
do something
#endif
在C代码
CALL(0);
CALL(0,1);
CALL(0,1,2)
所有调用上述CALL宏。如果没有使用ar2,ar3,则预处理器会忽略ar2或ar3的行。
有没有一种方法来#define
宏可变长度参数?具有可变长度参数的宏
#define CALL(ar1, ar2, ar3)
do something
#endif
在C代码
CALL(0);
CALL(0,1);
CALL(0,1,2)
所有调用上述CALL宏。如果没有使用ar2,ar3,则预处理器会忽略ar2或ar3的行。
是的,看看这个:http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html
关键词是__VA_ARGS__
(可变参数宏):
宏可以声明为接受可变数量的参数就像一个功能。定义宏的语法与函数的语法相似。下面是一个例子:
#define eprintf(...) fprintf (stderr, __VA_ARGS__)
我读过这个。这不是我想要的。这要求宏体具有采用__VA_ARGS__的函数。 – richard
请在搜索之前先搜索一下,或者只是在我最喜欢的搜索引擎中放入“可变长参数的宏”会带来很多结果。 –