VS2019可变参数宏定义报错

VS2019可变参数宏定义报错

可变参数的宏定义有两种:

#define LOG_ERR(fmt,args...) printf(fmt, ##args);
#define LOG_ERR(fmt,...) printf(fmt, ##__VA_ARGS__);

但是第一种在VS2019中会报错,项目用的是第一种,请问下这是VS2019的原因,除了换版本还有什么解决方式吗?

报错截图。

img

visual studio好像不支持第一种,gcc等编译器才支持吧。

VS2022像题主那样输入也会出现报错,所以不是版本的问题
我将"..."删去后,问题消失:

img

附:
C99中规定宏可以像函数一样带有可变参数,比如
#define LOG(format, ...) fprintf(stdout, format, VA_ARGS)
其中,...表示参数可变,__VA_ARGS__在预处理中为实际的参数集所替换
GCC中同时支持如下的形式
#define LOG(format, args...) fprintf(stdout, format, args)

希望对题主有所帮助,可以的话,帮忙点个采纳!