现在的位置: 首页 > 综合 > 正文

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

2011年11月11日 ⁄ 综合 ⁄ 共 658字 ⁄ 字号 评论关闭

__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__;

 

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

抱歉!评论已关闭.