C++ Builder 参考手册 ➙ C / C++ 可变参数的宏,__VA_ARGS__,...
宏的可变参数的写法
例子
一. 宏的可变参数的写法
1. 单独的 ... 和 __VA_ARGS__
标准 C / C++ 语言宏定义的参数允许用三个小数点 ... 表示这里是可变参数,在宏替换的时候,用 __VA_ARGS__ 表示 ... 位置的所有的参数。
例如:
#define test1(...) printf(__VA_ARGS__)
#define test2(fmt, ...) printf(fmt, __VA_ARGS__)
2. 参数后面带三个小数点
很多编译器扩展了可变参数的宏替换,这样的写法更容易记忆,宏定义的参数后面可以带三个小数点,表示这里是可变参数,宏替换的时候,直接写这个参数就表示这个位置是所有的可变参数了。
例如:
#define test3(fmt...) printf(fmt)
#define test4(fmt, args...) printf(fmt, args)
注:某些编译器需要用 ##args 表示 args... 位置所有的参数的宏替换。
二. 例子
1. 测试本文前面提到的 test1 到 test4 替换 printf
#include
#define test1(...) printf(__VA_ARGS__)
#define test2(fmt, ...) printf(fmt, __VA_ARGS__)
#define test3(fmt...) printf(fmt)</