【ARM 嵌入式 编译系列 2.1 -- GCC 预处理命令 #error 和 #warning 详细介绍 】

#error 和 #warning

在C语言中,#error#warning 预处理指令可以用于在编译时生成错误或警告信息,通常用于调试或当代码中某些条件未满足时提醒开发者。当这些指令被编译器处理时,会自动包含出现这些指令的文件名和行号,所以你可以清楚地看到问题出现的位置。

#error

当编译器遇到 #error 指令时,它会停止编译过程,并显示一个错误消息,同时包含该指令的文件名和行号。这通常用于当编译器检查到不满足特定条件时,强制编译失败。

示例
#if !defined(__STDC_VERSION__) || __STDC_VERSION__ < 199901L 
#error "This file requires C99 or higher" 
#endif 

如果编译器不支持 C99 或更高版本的标准,上述代码会导致编译错误,并且会打印出 #error 所在的行号。

#warning

#warning 指令不是标准C的一部分,但一些编译器如 GCC 支持它作为扩展。当编译器遇到 #warning 指令时,它会继续编译,但会在编译输出中显示一个警告消息,同时包含该指令的文件名和行号。

示例
#warning "This code is still under construction!" 

在编译时,如果你的编译器支持 #warning,上述代码会导致显示警告信息,并包含 #warning 指令所在的行号。

打印行号

在自定义错误或警告消息中,你也可以使用预定义的宏 __LINE____FILE__ 来显示当前的行号和文件名。

示例
printf("Warning occurred at line %d in file %s\n", __LINE__, __FILE__); 

在上面的代码中,__LINE__ 将被替换为包含该 printf 语句的行号,而 __FILE__ 将被替换为当前源文件的名称。 总之,#error#warning 预处理指令可以帮助你在编译时识别问题,它们自动包含文件名和行号,使得定位和解决问题更为直接。

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主公CodingCos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值