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

文章目录

    • #error 和 #warning
      • #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 预处理指令可以帮助你在编译时识别问题,它们自动包含文件名和行号,使得定位和解决问题更为直接。

你可能感兴趣的:(#,ARM,GCC,编译系列,arm开发)