综合了网上能找到的几个版本,我自己改写了如下的调试宏。
#ifndef MYDEBUG
#define MYDEBUG
#endif
#define MYDEBUG_PREFIX "--Hank Gong--"
//Debug information verbosity: lower values indicate higher urgency
#define MYDEBUG_OFF 0
#define MYDEBUG_ERR 1
#define MYDEBUG_WRN 2
#define MYDEBUG_TRC 3
#define MYDEBUG_INF 4
extern int MYDEBUG_LEVEL;
#define mydebug_off(msg...) \
do{ \
if (MYDEBUG_LEVEL>=MYDEBUG_OFF) { \
printf(MYDEBUG_PREFIX msg); \
} \
}while(0)
#define mydebug_err(msg...) \
do{ \
if (MYDEBUG_LEVEL>=MYDEBUG_ERR) { \
printf(MYDEBUG_PREFIX msg); \
} \
}while(0)
#define mydebug_wrn(msg...) \
do{ \
if (MYDEBUG_LEVEL>=MYDEBUG_WRN) { \
printf(MYDEBUG_PREFIX msg); \
} \
}while(0)
#define mydebug_trc(msg...) \
do{ \
if (MYDEBUG_LEVEL>=MYDEBUG_TRC) { \
printf(MYDEBUG_PREFIX msg); \
} \
}while(0)
#define mydebug_inf(msg...) \
do{ \
if (MYDEBUG_LEVEL>=MYDEBUG_INF) { \
printf(MYDEBUG_PREFIX msg); \
} \
}while(0)
#define mydebug(level, msg...) mydebug_##level(msg)
#undef assert
#define assert(x) { \
if (!(x)) { \
printf(__FILE__ ":%d assert " #x " failed\n", __LINE__); \
}\
}
//Usage:
//just include this file and define MYDEBUG_LEVEL like
//
//int MYDEBUG_LEVEL=MYDEBUG_ERR
//
//in the program use the command by
//mydebug(off|err|wrn|trc|inf, "test %d with %s", 100, "this");
本文介绍了一种自定义的调试宏实现方法,通过设置不同的调试级别,可以在代码中方便地插入不同等级的调试信息输出,有助于定位和解决问题。
872

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



