编译器警告通常会为常见的编程错误提供有用的提示。通常建议将编译器警告转换为错误(例如此处)。根据我的经验,这有助于防止警告被忽略,尤其是在较大的代码库或自动构建系统中。然而,有些警告作为警告很有用,但无法转换为错误,因为它们可能是误报,或者因为代码库无法立即调整,需要一些过渡期。
作为一种解决方法,我可以编译相同的代码两次:
- 一次运行,启用大多数或所有警告(例如
-Wextra
),但不会将其转变为错误(即没有-Werror
) - 第二次运行时,警告较少,但设置较为繁琐(即使用
-Werror
命令行选项)
这样,代码项目将从比当前可以修复的更多的警告中受益。
有没有办法直接做到这一点,即只需一个编译步骤,而不是两个?
我在另一个问题-Wno-error=[name]
中读到过这个选项,最新的 clang 命令行参考中也几乎没有提到,但我缺少详细信息。如果这些能解答我的问题,能否详细说明一下它的作用,以及/或者提供相关文档的链接?