【问题标题】:Does GCC have an equivalent to Clang's -Weverything? [duplicate]GCC 是否有相当于 Clang 的 -Weverything 的功能? [复制]
【发布时间】:2022-01-01 18:59:11
【问题描述】:

我希望收到有关使用 GCC 编译器的一切可能的警告。有没有办法在使用 GCC 时获得与 Clang 的 -Weverything 相同的行为?

【问题讨论】:

    标签: gcc clang warnings


    【解决方案1】:

    来自 LLVM Clang Documentation

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

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

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

    根据 gcc 的 documentation 关于 -Wall 参数的定义:

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

    请参考 gcc 的 documentation -Wall 启用的标志

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

    【讨论】:

    • “-Wall 启用所有编译器的警告消息” - 不幸的是,这是不正确的。至少有-Wextra-Wconversion
    • 谢谢@yugr 我修好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-12
    • 2017-02-18
    • 2012-06-18
    • 2023-03-31
    • 1970-01-01
    • 2014-04-02
    相关资源
    最近更新 更多