宏指令#line可用来修改C中所定义的__LINE__和__FILE__等宏定义的内容。
#line 行号 '文件名'。注意该行号为原文件中当前行号,文件名为当前编译的文件名。
#line 行号 '文件名'。注意该行号为原文件中当前行号,文件名为当前编译的文件名。
实例:
1:#include "iostream"
2:#line 100
3:using namespace std;
4:
5:int main(int argc, char* argv[])
6:{
6:{
7:cout<<"__LINE__:"<<__LINE__<<endl;
8:
9: return 0;
10: }
10: }
输出结果是:__LINE__:104
本来应该是输出:__LINE__:7,因为“cout<<"__LINE__:"<<__LINE__<<endl;”语句在第7行;
但是有了#line 100 ,则从“#line 100”所在行的下一行被认为是第100行,所以输出的行号是104了。
实例:
#include <stdio.h>;
int main(void)
{
#line 9999
}
因为没有helo的定义,所以编译会报错,此时加入的宏指令#line才会看到效果。
编译器会提示
"a.c", line 9999: error: undefined symbol: helo
"a.c", line 9999: warning: improper pointer/integer combination: arg #1
就是把当前行当作9999行了。
这样可以有利于错误代码的定位。