写作目的:找了网上大佬的一系列解答,再结合自己的实际经验,总结一下宏定义printf。
printf就是医生的听诊器,可以将函数运行的值打印出来,从而得知逻辑是否正确,哪个值出了问题,当然也可以用GDB,我觉得重要的值还是要打印出来,不太重要的值可以通过GDB调试,不然老是GDB效率较低。
1.代码如下
#include <stdio.h>
#define DEBUG_ENABLE 1
#define LOG_LEVEL DEBUG_ALL
#define MODULE "BIGGG"
#define ERR "ERR"
#define WARN "WARN"
#define INFO "INFO"
#define DEBUG_COLOR_ERR "\033[1;31m" //高亮红色
#define DEBUG_COLOR_WARN "\033[1;33m" //高亮黄色
#define PRINT_COLOR_INFO "\033[1;37m" //白色
#define DEBUG_COLOR_END "\033[0;33m" //灰色
enum DEBUG_LEVEL
{
DEBUG_OFF = 0,
DEBUG_ERR,
DEBUG_WARN,
DEBUG_INFO,
DEBUG_ALL
};
#define DEBUG(MODULE, LEVEL, FMT, ARGS...) \
do \
{ \
if(DEBUG_ENABLE && (DEBUG_##LEVEL <= LOG_LEVEL)) \
{ \
printf(DEBUG_COLOR_##LEVEL); \
printf("[%s]:[%s]:[%s]:%d "FMT"\n", MODULE, __FILE__, __FUNCTION__, __LINE__, ##ARGS); \
printf(DEBUG_COLOR_END); \
} \
} \
while(0)
int main()
{
int i = 0;
DEBUG(MODULE, WARN, "%s:%d", "nb", i);
return 0;
}
2.在需要的地方添加值打印即可。
友情链接:
printf打印设置颜色和等级_键盘上跳舞的精灵-CSDN博客_printf打印等级