#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” 方式快速找出谁的代码模块出错了。
浙公网安备 33010602011771号