关键代码片段
#ifdef DEBUG
#define DEBUG_PRINTF(...) printf(__VA_ARGS__)
#else
#define DEBUG_PRINTF(...)
#endif
int main() {
// 假设这里有一些代码
int num = 10;
DEBUG_PRINTF("调试信息:变量 num 的值为 %d\n", num);
// 其他代码
return 0;
}
原理说明
- 定义宏开关:
#ifdef DEBUG
用于检查是否定义了 DEBUG
宏。如果定义了 DEBUG
宏,那么 DEBUG_PRINTF
会被定义为 printf
,这样在调试阶段,DEBUG_PRINTF
调用就会实际输出调试信息。
- 未定义情况:如果没有定义
DEBUG
宏,DEBUG_PRINTF
会被定义为空,这意味着在发布版本中,所有对 DEBUG_PRINTF
的调用都会被预处理器替换为空,从而不产生任何代码,也就不会输出调试信息。
- 编译控制:在调试阶段编译程序时,通过在编译命令中添加
-DDEBUG
选项来定义 DEBUG
宏,例如 gcc -DDEBUG main.c
。在发布版本编译时,不添加该选项,即可实现调试信息的裁剪。