我有一个在gcc 4.8.4下构建的项目。我尝试使用gcc 7构建,并注意到很多-Wimplicit-fallthrough=
警告。 As far as I'm aware,这确实是在gcc版本7中添加的。我现在正在构建时使用-Wno-implicit-fallthrough
来抑制这些警告。回到旧版本的gcc,保持-Wno-implicit-fallthrough
编译器标志不导致任何错误,即使我不相信gcc 4识别此选项。怎么会?具体是-Wno-
选项是否允许不被识别?
答案 0 :(得分:3)
来自man gcc
:
当请求无法识别的警告选项时(例如, -Wunknown-warning),GCC发出诊断声明该选项是 未识别。但是,如果使用-Wno-形式,则行为为 略有不同:没有为-Wno-unknown-warning生成诊断 除非正在制作其他诊断信息。这允许使用 使用旧编译器的新-Wno-选项,但如果出现问题,可以使用 编译器警告存在无法识别的选项。
总结一下:如果一切顺利,将忽略未知的-Wno-*
开关以保持兼容性。