[随笔]#define宏定义可变参数的使用

开门见山,如下便是今天想随笔记录的可变参数宏定义

#define xxx(fmt...) yyy(fmt)

其中的…就表示可传入以逗号隔开的多参数。

举例,
实际项目开发中,需要实现log打印的level控制,如下例子,只有on为真时,才会打印log,否则为空,即不打印log。

#define LOG(on, Format...)  \
if(on){                     \
    printf(Format)          \
}else{                      \
    //Do nothing            \
}

如有函数functionA() call到LOG函数,如下:

void functionA(void){
    INT8 i=0;
    ......
    LOG(1, "This is the first example\n");  //例子1
    ......
    LOG(1, "This is the second example i = %d\n", i);  //例子2
}

此函数中,
例子1:在预编译时,告诉编译器Format展开为一个参数,即LOG传入了两个参数;
例子2:在预编译时,告诉编译器Format展开为两个参数,即LOG传入了三个参数。

如有错误,欢迎指正。

你可能感兴趣的:(随笔)