jmd*_*_dk 4 linux gcc suppress-warnings gcc-warning fall-through
我有一个在 gcc 4.8.4 下构建良好的项目。我尝试使用 gcc 7 构建,并注意到很多-Wimplicit-fallthrough=警告。据我所知,这确实是在 gcc 版本 7 中添加的。我现在-Wno-implicit-fallthrough在构建时使用以抑制这些警告。移动回旧版本的gcc,保持-Wno-implicit-fallthrough编译器标志并不会导致任何错误,即使我不相信GCC 4识别此选项。怎么来的?特别是-Wno-允许不被识别的选项吗?
来自man gcc:
当请求一个无法识别的警告选项时(例如,-Wunknown-warning),GCC 发出一个诊断信息,说明该选项未被识别。但是,如果使用 -Wno- 形式,则行为略有不同:除非正在生成其他诊断信息,否则不会为 -Wno-unknown-warning 生成任何诊断信息。这允许对旧编译器使用新的 -Wno- 选项,但如果出现问题,编译器会警告存在无法识别的选项。
总结一下:如果一切顺利,未知-Wno-*开关将被忽略以保持兼容性。