没有参数时可变长参数宏编译错误
问题
在使用宏 __VA_ARGS__
时提示 expected primary-expression before ')' token
。
原因
没有传入参数的时候 __VA_ARGS__
参数列表最后面就成了逗号了。
#define LOG_MSG(MSG, ...) \
printf("[log][%s]" MSG, __FUNCTION__, ## __VA_ARGS__);
解决方法:在 __VA_ARGS__
前加上 ##
来消除逗号
参考
How to define same macro function based on different parameters