在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
本文介绍了在C语言中如何使用宏定义实现自定义打印函数,包括基本的打印函数封装和嵌套宏调用处理可变参数的示例。通过具体的代码演示了如何在宏定义中使用可变参数列表以及如何正确地展开这些参数。

5141

被折叠的 条评论
为什么被折叠?



