没有参数时可变长参数宏编译错误

发布于:2022-03-28
阅读时长:1分钟

问题

在使用宏 __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

最后更新于:2024-03-27