在C语言中,我们封装自己的打印函数时(如增加打印级别信息),可能需要在#define里使用可变参数,简单示例如下:
#include <stdio.h>
#define DEBUG0(fmt, args...) printf(fmt, ## args)
int main() {
char *szMsg = "My Test : ";
int count = 1;
DEBUG0("%s %d\n", szMsg, count);
return 0;
}
#####输出#####
My Test : 1
若我们需要嵌套调用#define,并且需要传递可变参数时,简单示例如下:
#include <stdio.h>
#define DEBUG0(fmt, args...) printf(fmt, ## args)
#define MODULE_PRINT(fmt, args...) DEBUG0(fmt, ##args)
int main() {
char *szMsg = "My Test : ";
int count = 1;
DEBUG0("%s %d\n", szMsg, count);
count = 2;
MODULE_PRINT("%s %d\n", szMsg, count);
return 0;
}
#######输出#######
My Test : 1
My Test : 2