使用ANSI C and Microsoft C++中常用的预定义宏

长平狐 发布于 2012/12/10 17:19
阅读 23
收藏 0
  __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__;

 

宏中#与##的讲解会另开一篇。见

C,C++宏中#与##的讲解


原文链接:http://blog.csdn.net/morewindows/article/details/6696395
加载中
返回顶部
顶部