最基本的:通常我们日志区分Debug日志和Release日志
1. Debug日志详细打印出信息,包括开发定位的相关信息;
2. Release日志只打印用户交互的信息,不打印和用户感受无关的信息;
一般可以基于_DEBUG变量定义宏来解决日志打印问题:
例如可以如下定义debug时使用的日志宏
打印debug信息时使用该LogPrintf,而在与用户交户的时候,使用printf宏.
通常的原则:Debug相关的信息,仅对Debug方式有效,对Release无任何影响,包括性能
#if _MSC_VER < 1400 // 版本较低时,不支持...类型的宏,屏蔽代码LogPrintf (vc60, vc70)
#define LogPrintf //
#else // 1400之后的版本支持...类型的宏,此时来区分_Debug和_Release模式
#ifdef _DEBUG
#define LogPrintf(format, ...)\
{\
printf(format, __VA_ARGS__);\
}
#else
#define LogPrintf(format, ...)
#endif
#endif
再进一步,我们希望打印 行号、文件名、函数名:
此时,借用系统中的宏可以实现
__FUNCTIONW__ 函数名(Unicode)
__FUNCTION__: 函数名(ANSI)
__FILEW__ 文件名(Unicode)
__FILE__ : 文件名(ANSI)
__LINE__ : 行号
例如,在Debug日志中打印行号和文件名,方便定位,我们可以再定位一种Debug的Printf: LogPrintfWithFileLine
#define LogPrintfWithFileLine(format, ...)\
{\
printf(format, __VA_ARGS__);\
printf(_T(" at %s<line:%d>\n"), __FILEW__ , __LINE__);\
}
Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源