1、简单的log打印函数测试
##__VA_ARGS__ 宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的","去掉的作用,否则会编译出错。
#define MY_PRINTF_NORMAL 0
#define MY_PRINTF_MUST 1
#define MY_PRINTF_ERROR 2
#define MY_PRINTF_DEBUG 3
#define MY_PRINTF_LEVEL MY_PRINTF_DEBUG
#ifdef DEBUG //调试开关
#define log(format, ...) printf("File: "__FILE__", Line: %05d: "format"/n", __LINE__, ##__VA_ARGS__)
#else
#define log(format, ...)
#endif
#define log_print(level, ...); { \
if(level <= MY_PRINTF_LEVEL){ \
log(__VA_ARGS__); \
//log("error no: %d, error msg : %s", errno, strerror(errno)); \
exit(1); \
} \
2、测试用例
用例1:
log("this is a test , arg is %d \n", a); //直接打印
用例2:
log_print(MY_PRINTF_ERROR,"this is a test , arg is %d \n", a); //根据打印等级,判断是否需要打印