#error和#line

1. #error的用法

(1) #error用于生成一个编译错误的消息,并停止编译

(2)用法:

          #error  message

  注:message不需要用双引号包围

  #error编译指示字用于自定义程序特有的编译错误消息

  类似的,#warning 用于生成编译警告,但不会停止编译

 

2. #error和#warning的使用(自定义错误消息)

#include <stdio.h>
 
#define CONST_NAME1 "CONST_NAME1"
#define CONST_NAME2 "CONST_NAME2"
 
int main()
{  
    #ifndef COMMAND
    #warning Compilation will be stoped ...
    #error No defined Constant Symbol COMMAND   //当COMMAND没有这个宏,将停止编译
    #endif
 
    printf("%s\n", COMMAND);
    printf("%s\n", CONST_NAME1);
    printf("%s\n", CONST_NAME2);
 
    return 0;
}

  中间文件:gcc -DCOMMAND=\"TestCommand\" -E test.c -o test.i

  编译命令:gcc -DCOMMAND=\"TestCommand\" test.c

 

3. line的用法

(1)#line 用于强制指定新的行号和编译文件名,并对源程序的代码重新编号

(2)用法:

    #line number filename

    注:filename可省略

  #line 编译指示字的本质是重定义内置的宏__LINE__和__FILE__

 

4. line的使用(重定义行号和文件名)

#include <stdio.h>
 
#line 14 "Hello.c"   //该行的下一行,为#line指示的行号,文件名编程line指示的文件名
 
#define CONST_NAME1 "CONST_NAME1"
#define CONST_NAME2 "CONST_NAME2"
 
void f()  //这个函数时常规的错误
{
    return 0;  
}
 
int main()
{
    printf("%s\n", CONST_NAME1);
    printf("%s\n", CONST_NAME2);
    printf("%d\n", __LINE__);
    printf("%s\n", __FILE__);
     
    f();
 
    return 0;
}

   # line 主要在古老的写程序时,多人合作,用#line 1 “name” 方式快速找出谁的代码模块出错了。

posted on 2018-04-26 21:51  arabain  阅读(132)  评论(0)    收藏  举报

导航