在开发的过程中,会在代码中插入一些调试用代码,一般用来向文件或是屏幕输出调试信息。虽然C标准库提供了assert, 但是assert会中断程序,而且有的系统用的C语言库并没有此类的宏,移植性差,因此自己做一些Log宏,可以满足自己的要求。这些宏可以显示某个变量的值,显示出现的错误,一般可以结合__FILE__,__LINE__这些宏来定位信息。同时,结合条件编译又可以分为多种输出级别,例如,DUMP,DEBUG,ERROR,FATAL等级别。 只有在定义这些条件时,宏才起作用。
例如
#ifdef DUMP
#define DUMP_LOG(x) x
#else
#define DUMP_LOG(x)
#endif
#ifdefine DUMP || DEBUG
#define DEBUG_LOG(x) x
#else
#define DEBUG_LOG(x)
#endif
#ifdefine DUMP || DEBUG||ERROR
#define ERROR_LOG(x) x
#else
#define ERROR_LOG(x)
#endif
#ifdefine DUMP || DEBUG||ERROR||FATAL
#define FATAL_LOG(x) x
#else
#define FATAL_LOG(x)
#endif
定义完后,在代码中可以在这些宏中写一个语句,用于调试
例如: ERROR_LOG(printf("%s:%d:error description/n",__FILE__,__LINE__););
通过编译时定义这些编译条件宏来决定使用那些调试语句。