Chinaunix首页 | 论坛 | 博客
  • 博客访问: 861496
  • 博文数量: 156
  • 博客积分: 6553
  • 博客等级: 准将
  • 技术积分: 3965
  • 用 户 组: 普通用户
  • 注册时间: 2010-06-22 18:36
文章存档

2012年(3)

2011年(43)

2010年(110)

分类: LINUX

2010-10-17 18:37:30

1.#error产生错误信息
#include
//#define ERR 0
int main()
{
#ifdef ERR
 printf("error test\n");
#else
#error this error
 printf("else \n");
#endif
 return 0;
}
当我们编译这个例子是可以发现,当ERR这个宏被定义是 
#error this error
 printf("else \n");
这两句是会被编译进去的,但#error在此,编译通不过,并且会在终端上打印信息 this error 这个错误信息,这样我们可以使用#error的用法来调试程序,使用#error来查看某段代码是否被编译了

2.
使用一些宏跟踪调试   ANSI标准说明了五个预定义的宏名。它们是:   
__LINE__   
__FILE__   
__DATE__   
__TIME__
__LINE__ 及 __FILE__ 宏指示,#line指令可以改变它的值,简单的讲,编译时,它们包含程序的当前行数和文件名。   
__DATE__ 宏指令含有形式为月/日/年的串,表示源文件被翻译到代码时的日期。   
__TIME__ 宏指令包含程序编译的时间。时间用字符串表示,其形式为: 分:秒
使用例子:
#include
#line 100 "mymacro.c"
void copy()
{
        printf("this is line %d in the file %s , at %s : %s\n", __LINE__, __FILE__, __DATE__, __TIME__);
}

int main()
{
        copy();

        return 0;
}

打印信息如下:this is line 102 in the file mymacro.c , at Apr  6 2011 : 02:21:52


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