如果遇到#define XXX (...)这样的宏定义,其实表示的是输入参数不定的情况,这里直接给出实例来说明:
#include <stdio.h>
using namespace std;
#define LOG(...) printf(__VA_ARGS__)
#define TADD(...) add(__VA_ARGS__)
int add (int a, int b) {
return a + b;
}
int add (int a, int b, int c) {
return a + b + c;
}
int main() {
// test1
LOG("This is a test %d, %d, %d \n", 1, 2, 3);
printf("result1 is %d\n", TADD(1,2));
printf("result1 is %d\n", TADD(1,2,3));
return 0;
}
结果为:
This is a test 1, 2, 3
result1 is 3
result1 is 6
可以看到这是专门用来处理输入参数不定的宏定义情况,可用于多种情况(多态函数调用,多个类构造函数实例化等)。