宏定义中应用可变参数
C99 减少了宏定义中应用可变参数的反对。
用法为在定义中通过'...'定义可变参数,前面通过__VA_ARGS__援用。
如上面定义DGB宏,在log中主动减少'DEBUG'。
#define DBG(format, ...) printf("DEBUG: " #format "\n", ##__VA_ARGS__)
宏应用例
DBG("%d - %s", a,b);
问题
如下不指定参数应用,则会编译失败
DBG("hahaha");
: error: expected expression before ‘)’ token#define DBG(format, ...) printf("DEBUG: " #format "\n", __VA_ARGS__) ^
解决办法
#define DBG(format, ...) printf("DEBUG: " #format "\n", ##__VA_ARGS__) ^^
参考
https://stackoverflow.com/que...
http://gcc.gnu.org/onlinedocs...