1.在linux编译中提示引用未定义的_FILE_等宏?
要使用__FILE__。注意是双下划线,书上很多连在一起会误以为是单下划线。
2.使用#ifdef DEBUG
在编译的时候要加上-DDEBUG选项
#include <stdio.h> #ifdef DEBUG #define DBG_PRT(format) printf("FILE:%s LINE:%d "format" ", __FILE__, __LINE); #endif #ifndef DEBUG #define DBG_PRT(format) #endif int main() { DEG_PRT("***********"); return 0; } 运行带调试的:gcc -DDEBUG *.c 运行不带调试的:gcc *.c
#ifdef DEBUG_XD
#define DBG_PRT(x,format,...)
do{
if(x == DBG_ON) printf("FILE: %s FUNC: %s LINE: %d "format"
",__FILE__, __FUNCTION__, __LINE__, ##__VA_ARGS__);
}while(0);
#else
#define DBG_PRT(x,format,...)
#endif
#endif /* TRACE_H_ */