L18: #ERROR 和#LINE
- #error 用于生产一个编译错误消息,并停止编译
- 用法 #error message
- message 不需要用双引号包围
- #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
#endif
printf("%s\n", COMMAND);
printf("%s\n", CONST_NAME1);
printf("%s\n", CONST_NAME2);
return 0;
}
人为的制造错误信息,输出信息或者结束编译
编译时可以用gcc -DCOMMAND =\"TESTCOMAMD\" test.c
增加编译选项,可通过编译
#line
的用法:(用的较少)
用于强制指定新的行号和编译文件名,并对源程序的代码重新编号
用法:
#line number filenmae
//file name 可省略
// #line编译指示字的本质是重定义__FILE__和 __LINE__
#include <stdio.h>
#line 14 "Hello.c" //重新设置文件名为 hello.c,本行设置为14
#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__);//输出 HELLO.C
f();
return 0;
}