宏#line的用法

宏指令#line可用来修改C中所定义的__LINE__和__FILE__等宏定义的内容。
#line 行号 '文件名'。注意该行号为原文件中当前行号,文件名为当前编译的文件名。

 
实例:
       1:#include "iostream"
       2:#line 100
       3:using namespace std;
        4:
       5:int main(int argc, char* argv[])
       6:{
       7:cout<<"__LINE__:"<<__LINE__<<endl;
        8:
       9:   return 0;
       10: }
 
输出结果是:__LINE__:104
本来应该是输出:__LINE__:7,因为“cout<<"__LINE__:"<<__LINE__<<endl;”语句在第7行;
但是有了#line 100 ,则从“#line 100”所在行的下一行被认为是第100行,所以输出的行号是104了。


实例:

    #include <stdio.h>;
    int main(void)
   {
        #line 9999
        printf(helo);
        return 0;
    }

因为没有helo的定义,所以编译会报错,此时加入的宏指令#line才会看到效果。

编译器会提示
"a.c", line 9999: error: undefined symbol: helo
"a.c", line 9999: warning: improper pointer/integer combination: arg #1
就是把当前行当作9999行了。

这样可以有利于错误代码的定位。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值