C99中规定宏也可以使用可变参数(参考C variadic函数)。于是有了__VA_ARGS__宏。举例#define LogAny(fmt, ...) printf(fmt, ##__VA_ARGS__) 说明 没有## ,语法也是正确的,但当可变参数个数为0时会报错。加上##的作用在于,当可变参数个数为0时,##能把前面多余的","去掉。