面试题答案
一键面试#ifdef DEBUG
#define DEBUG_PRINT(...) printf("Function: %s, File: %s, Line: %d, ", __func__, __FILE__, __LINE__); printf(__VA_ARGS__); printf("\n")
#else
#define DEBUG_PRINT(...)
#endif
利用编译器特性优化
现代编译器(如 GCC、Clang)通常能够在编译时优化掉空宏。当 DEBUG
未定义时,编译器在预处理阶段会将 DEBUG_PRINT
替换为空,从而不会生成任何代码,减少了不必要的代码生成。同时,使用 __func__
、__FILE__
和 __LINE__
这些编译器内置宏,编译器在编译时就能确定这些值,进一步优化代码生成。