【发布时间】:2022-01-07 04:14:18
【问题描述】:
我想知道对于 GCC 和 Clang,是否有一些聪明的、自动的方法可以知道特定编译器警告(例如 -Wunused-parameter)是否来自组 -Wall、-Wextra 或其他组。
用例:我们要启用:
-Wall -Wextra -pedantic
但是,某些pedantic 警告对我们不适用,我们希望禁用它们,例如:
-Wall -Wextra -pedantic -Wno-c++20-designator
现在,我们希望 100% 确定我们不会禁用来自 -Wall 或 -Wextra 的任何内容。我们如何确保-Wc++20-designator 不是其中的一部分?当然可以去查看文档,但是当您有许多此类警告或升级编译器并收到新警告时,这是一个乏味的过程。
我们的用例确保所有-Wall、-Wextra 警告始终处于活动状态,而不管来自-pedantic 的禁用警告。
谢谢!
【问题讨论】:
-
请一题一题。
Automatically know if a GCC/Clang warning comes from Wall or Wextra?不能替代is there a way to ensure that all -Wall, -Wextra warnings will always be active, regardless of the disabled warnings?。第二个问题我也看不懂,是的,有办法,不要禁用任何警告。 -
“我们希望 100% 确定我们没有禁用 -Wall 或 -Wextra 的任何内容”。这听起来像是一个管理功能,我想知道为什么
pedantic不是最低要求。 gcc 文档中列出了在哪个状态下启用了哪个警告。但我相信它会不时改变,也许文档不会总是改变。我个人喜欢看到每一个警告并尽快修复。可以在此处看到由标志打开的警告:gcc.gnu.org/onlinedocs/gcc/Warning-Options.html。我们用所有警告编译我们的单元测试目标并计算它们。 >0 是错误的! -
@KamilCuk 这不是问题的答案。克劳斯“哪一个是最小的”不在这个讨论范围内。我知道 GCC 链接,即使 Clang 没有等效的链接(您需要做更多的侦探工作)。我将在这方面更新问题。我的问题是这是否可以自动/以编程方式完成,而不是每次都手动进入文档。
-
将问题更新为只有 1 个问题。
-
你可以问gcc哪个选项启用了什么,试试
gcc -Q -Wall --help=warnings | grep enabled。这对你有帮助吗?
标签: c++ gcc clang compiler-warnings suppress-warnings