Chinaunix首页 | 论坛 | 博客
  • 博客访问: 856387
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: C/C++

2012-02-14 11:04:52

C++ 调试宏 __LINE__ __FILE__ & UNICODE使用方法
跟踪调试宏__LINE__, __FILE__

__DATE__   __FILE__   __LINE__   __FUNCDNAME__

__STDC__ __TIME__ __TIMESTAMP__

使用方法:printf("%s %d %s",__DATE__,__LINE__,__FILE__);

UNICODE 使用方法:

#include
#define WIDEN2(x) L ## x
#define WIDEN(x) WIDEN2(x)
#define __WFILE__ WIDEN(__FILE__)
wchar_t *pwsz = __WFILE__;

09-09-28 16:08 来源: 网友评论: 0 浏览次数: 0

ANSI标准说明了五个预定义的宏名。它们是:
__LINE__
__FILE__
__DATE__
__TIME__
__STDC__
C++中还定义了 __cplusplus

如果编译器不是标准的,则可能仅支持以上宏名中的几个,或根本不支持。记住编译程序也许还提供其它预定义的宏名。

__LINE__ 及 __FILE__ 宏指示,#line指令可以改变它的值,简单的讲,编译时,它们包含程序的当前行数和文件名。

__DATE__ 宏指令含有形式为月/日/年的串,表示源文件被翻译到代码时的日期。
__TIME__ 宏指令包含程序编译的时间。时间用字符串表示,其形式为: 分:秒
__STDC__ 宏指令的意义是编译时定义的。一般来讲,如果__STDC__已经定义,编译器将仅接受不包含任何非标准扩展的标准C/C++代码。如果实现是标准的,则宏__STDC__含有十进制常量1。如果它含有任何其它数,则实现是非标准的。
__cplusplus 与标准c++一致的编译器把它定义为一个包含至少6为的数值。与标准c++不一致的编译器将使用具有5位或更少的数值。


可以定义宏,例如:
当定义了_DEBUG,输出数据信息和所在文件所在行
#ifdef _DEBUG
#define DEBUGMSG(msg,date) printf(msg);printf(“%d%d%d”,date,_LINE_,_FILE_)
#else
#define DEBUGMSG(msg,date)
#endif

/*


命令#line改变_LINE_   与__FILE__的内容,它们是在编译程序中预先定义的标识符。  
命令的基本形式如下:  
#line   number["filename"]  
其中的数字为任何正整数,可选的文件名为任意有效文件标识符。
行号为源程序中当前行号,文件名为源文件的名字。命令#line主要用于调试及其它特殊应用。  
例如,下面说明行计数从100开始;printf(   )  
语句显示数102,因为它是语句#line 100后的第3行。  
#line   100

*/

#include     

#line   100  
int   main()  
{  
printf("%dn",   __LINE__);  
return   0;  
}

阅读(1461) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~