可变参数的宏定义有两种:
#define LOG_ERR(fmt,args...) printf(fmt, ##args);
#define LOG_ERR(fmt,...) printf(fmt, ##__VA_ARGS__);
但是第一种在VS2019中会报错,项目用的是第一种,请问下这是VS2019的原因,除了换版本还有什么解决方式吗?
报错截图。
visual studio好像不支持第一种,gcc等编译器才支持吧。
VS2022像题主那样输入也会出现报错,所以不是版本的问题
我将"..."删去后,问题消失:
附:
C99中规定宏可以像函数一样带有可变参数,比如
#define LOG(format, ...) fprintf(stdout, format, VA_ARGS)
其中,...表示参数可变,__VA_ARGS__在预处理中为实际的参数集所替换
GCC中同时支持如下的形式
#define LOG(format, args...) fprintf(stdout, format, args)
希望对题主有所帮助,可以的话,帮忙点个采纳!