一、概念介绍:
1、...
:表示可变参数列表。
2、__VA_ARGS__
:表示是一个可变参数的宏。
3、args...
:表示可变参数列表,表示后续的args可能会有多个。
4、args
:表示是一个可变参数的宏。
二、基础应用:
#define LOG1(...) func1(__VA_ARGS__)
#define LOG2(args...) func1(args)
__VA_ARGS__作用: 将左边宏中的’…'的内容原样抄到右边__VA_ARGS__所占用的位置。 以上两宏等价。
#define LOG1(fmt, ...) func1(fmt, ##__VA_ARGS__)
#define LOG2(fmt, args...) func1(fmt, ##args)
**##的作用:**当可变参数的个数为0时,##起到把前面多余的","去掉的作用,否则会编译出错。