GCC 有等同于 Clang 的 -Weverything 吗?[复制]

Does GCC have an equivalent to Clang's -Weverything? [duplicate]

提问人:aganm 提问时间:1/2/2022 更新时间:1/2/2022 访问量:751

问:

我想被警告使用 GCC 编译器的所有可能。在使用 GCC 时,有没有办法获得与 Clang 的 -Weverything 相同的行为?

GCC Clang 警告

评论


答:

0赞 Harun Cetin 1/2/2022 #1

从 LLVM Clang 文档

启用所有诊断 除了传统的 -W 标志外,一个 可以通过传递 -Weverything 来启用所有诊断。这可以作为 预期为 -Werror,还包括来自 -pedantic 的警告。 一些诊断相互矛盾,因此,用户 -Weverything经常禁用许多诊断,如-Wno-c++98-compat和-Wno-c++-compat,因为它们与最近的C++标准相矛盾。

由于 -Weverything 支持所有诊断,因此我们通常不会 推荐使用它。-墙壁 -Wextra 是大多数人的更好选择 项目。使用 -Weverything 意味着更新编译器更多 困难,因为您接触到了实验性诊断 质量可能低于默认质量。如果您确实使用 -Weverything 然后,我们建议您在将所有新的编译器诊断添加到 Clang 时解决它们,或者通过修复所有内容来解决它们 他们发现或显式禁用该诊断,其 相应的 Wno- 选项。

请注意,当与 -w(禁用所有警告)结合使用时, 禁用所有警告将获胜。

从 gcc 文档中关于 -Wall 参数的定义来看:

这将启用有关某些用户构造的所有警告 认为有问题,并且易于避免(或修改为 阻止警告),即使与宏结合使用。这也 启用 C++ 方言中描述的一些特定于语言的警告 选项以及 Objective-C 和 Objective-C++ 方言选项。

请参考 gcc 的文档,哪些标志由 -Wall 启用

因此,将 -Weverything 与 clang 一起使用会令人沮丧,因为所有详细信息都将列出并启用一些实验性警告消息,如引用中所述。

评论

3赞 yugr 1/2/2022
“-Wall 启用所有编译器的警告消息” - 不幸的是,这是不正确的。至少有和.-Wextra-Wconversion
2赞 Gavin Ray 1/15/2023
有 、 和许多其他未启用的。我有一个完整的清单。gist.github.com/GavinRay97/bae1d93925e55ce0a0084946f24984cf-Wextra-Wnon-gcc