使用ANSI C and Microsoft C++中常用的预定义宏
__FILE__ 源文件的名称 如XXX.cpp
__LINE__ 代码在源文件中是第几行
__DATE__ 源文件完成日期如Aug 17 2011
__TIME__ 源文件完成时间如19:31:13
__TIMESTAMP__ 源文件完成日期时间如Wed Aug 17 19:27:36 2011
如分配内存函数malloc()的一个版本就使用了上面的宏
#define malloc(s) _malloc_dbg(s, _NORMAL_BLOCK, __FILE__, __LINE__)
另外可以在程序中使用__FILE__和__LINE__来确定是哪个文件哪一行出错:
char *pszFileName = (char*)malloc(MAX_PATH * sizeof(char));
if (pszFileName == NULL)
printf("Error in %s %d\n", __FILE__, __LINE__);
当然实际程序中大多用__FILE__和__LINE__快速定位错误后不会直接输出,而是通过另一程序来将这些信息以EMAIL形式反馈给开发人员。
对__FILE__可以方便的转化成wchar_t类型,MSDN就有这个例子:
#define WIDEN2(x) L ## x
#define WIDEN(x) WIDEN2(x)
#define __WFILE__ WIDEN(__FILE__)
wchar_t *pwsz = __WFILE__;
宏中#与##的讲解会另开一篇。
posted on 2011-08-17 21:30 MoreWindows 阅读(2299) 评论(0) 编辑 收藏 举报