4

我有一个在 gcc 4.8.4 下构建良好的项目。我尝试使用 gcc 7 构建,并注意到很多-Wimplicit-fallthrough=警告。据我所知,这确实是在 gcc 版本 7 中添加的。我现在-Wno-implicit-fallthrough在构建时使用它来抑制这些警告。回到旧版本的 gcc,保留-Wno-implicit-fallthrough编译器标志不会导致任何错误,即使我不相信 gcc 4 识别此选项。怎么来的?具体是-Wno-允许不被识别的选项吗?

4

1 回答 1

5

来自man gcc

当请求一个无法识别的警告选项(例如,-Wunknown-warning)时,GCC 会发出一个诊断,说明该选项未被识别。但是,如果使用 -Wno- 形式,则行为略有不同:不会为 -Wno-unknown-warning 生成诊断,除非正在生成其他诊断。这允许在旧编译器中使用新的 -Wno- 选项,但如果出现问题,编译器会警告存在无法识别的选项。

总结一下:如果一切顺利,未知-Wno-*开关将被忽略以保持兼容性。

于 2018-03-31T23:03:48.450 回答