C++不定参数宏定义(#define XXX (...)表示什么意思)

如果遇到#define XXX (...)这样的宏定义,其实表示的是输入参数不定的情况,这里直接给出实例来说明:

#include 
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

可以看到这是专门用来处理输入参数不定的宏定义情况,可用于多种情况(多态函数调用,多个类构造函数实例化等)。

你可能感兴趣的:(c++,算法,开发语言)