我继承了包含调试宏的代码。
#define DEBUG_LEVEL_NONE 0
#define DEBUG_LEVEL_ONE 1
#define DEBUG_LEVEL_TWO 2
#if DEBUG_LEVEL == DEBUG_LEVEL_NONE
#define DEBUG(print_level, str)
#else /* DEBUG_LEVEL */
#define DEBUG(print_level, str) \
{ \
if (DEBUG_LEVEL >= print_level) \
{ \
printf("%-25s %4d %2d:", __FILE__, __LINE__, print_level); \
printf(str); \
fflush(NULL); \
} \
}
#endif /* DEBUG_LEVEL */
一切正常,但我想避免额外的代码并测试较低的调试级别。
我知道我不能将预处理器测试放在宏定义中。有没有办法得到像
这样的效果#define DEBUG(print_level, str) \
{ \
#if (DEBUG_LEVEL >= print_level) \
printf("%-25s %4d %2d:", __FILE__, __LINE__, print_level); \
printf(str); \
fflush(NULL); \
#endif \
}
感谢
答案 0 :(得分:0)
你可以使用普通的“if”,任何体面的编译器都会对条件进行常数折叠并排除正文。