从gcc中取消“无法识别的命令行选项”

时间:2018-09-30 10:45:59

标签: c gcc

我正在使用gcc 7.3。例如,如果我使用int main(){ } gcc main.c -Wno-foo,编译成功,并且没有错误输出。

在保持构建命令的同时将源代码更改为int main(){ int a[-1]; /*uncompilable*/ }会得到我的帮助:

main.c: In function ‘main’:
main.c:3:6: error: size of array ‘a’ is negative
  int a[-1];
      ^
main.c: At top level:
cc1: warning: unrecognized command line option ‘-Wno-foo’

是否可以在不将编译错误引入源代码的情况下强制发出unrecognized command line option ‘-Wno-foo’警告/错误消息?

-Wfoo(没有no-)会立即向我发送警告消息,但我宁愿将no-留在那儿。 (这是为了进行编译器功能测试,我将其作为构建的一部分。)

1 个答案:

答案 0 :(得分:3)

这显然是gcc的功能,而不是bug。来自GCC manual

  

当请求无法识别的警告选项时(例如,   '-Wunknown-warning'),GCC会发出诊断信息,指出该选项   无法识别。但是,如果使用“ -Wno-”形式,则行为   略有不同:不会针对   “ -Wno-unknown-warning”,除非正在产生其他诊断信息。   这允许在旧的编译器中使用新的'-Wno-'选项,但是如果   出了点问题,编译器警告说无法识别的选项   存在。

因此,如果您需要知道该选项是否存在,则需要在没有no-的情况下使用它。先做如果发现它受支持,请执行需要使用-Wno-foo参数的测试。

相关问题