如何禁用 Clang 警告 "no case matching constant switch condition"
How to disable Clang warning "no case matching constant switch condition"
我正在处理一个使用另一个项目代码的项目,而另一个代码在编译期间给我一堆警告。我不想更改该代码(我的项目只是他们代码的薄包装,我希望能够在不打补丁的情况下引入更新)所以我想禁用这些警告,这样我就可以专注于只是我自己的代码。
遗憾的是,我看不到它的记录位置!
我收到的错误是:
warning: no case matching constant switch condition '2'
我有 looked in the manual 并尝试了 -Wno-switch
、-Wno-switch-bool
和 -Wno-switch-enum
,但其中 none 使此警告消失。我看不到手册中列出此警告消息的位置。
使用 Google 我无法找到任何与错误文本匹配的命令行选项。
使用 GitHub 我能够找到 runs a test for this warning 的 LLVM 源,但我没有任何运气映射回到 -W
选项来禁用它。
我错过了什么?
下面是一些重现错误的代码:
enum En { A, B, C };
template <En how> void foo() {
int x = 0, y = 5;
switch (how) {
case A: x *= y; break;
case B: x += y; break;
}
}
template void foo<C>();
int main(void)
{
return 0;
}
恐怕没有 -Wno-<what>
标志可以专门抑制此警告。
如果有,那么诊断将是:
warning: no case matching constant switch condition '2' [-W<what>]
您只能通过抑制 所有 警告来抑制它,使用 -Wno-everything
,
我当然不建议这样做。
我正在处理一个使用另一个项目代码的项目,而另一个代码在编译期间给我一堆警告。我不想更改该代码(我的项目只是他们代码的薄包装,我希望能够在不打补丁的情况下引入更新)所以我想禁用这些警告,这样我就可以专注于只是我自己的代码。
遗憾的是,我看不到它的记录位置!
我收到的错误是:
warning: no case matching constant switch condition '2'
我有 looked in the manual 并尝试了 -Wno-switch
、-Wno-switch-bool
和 -Wno-switch-enum
,但其中 none 使此警告消失。我看不到手册中列出此警告消息的位置。
使用 Google 我无法找到任何与错误文本匹配的命令行选项。
使用 GitHub 我能够找到 runs a test for this warning 的 LLVM 源,但我没有任何运气映射回到 -W
选项来禁用它。
我错过了什么?
下面是一些重现错误的代码:
enum En { A, B, C };
template <En how> void foo() {
int x = 0, y = 5;
switch (how) {
case A: x *= y; break;
case B: x += y; break;
}
}
template void foo<C>();
int main(void)
{
return 0;
}
恐怕没有 -Wno-<what>
标志可以专门抑制此警告。
如果有,那么诊断将是:
warning: no case matching constant switch condition '2' [-W<what>]
您只能通过抑制 所有 警告来抑制它,使用 -Wno-everything
,
我当然不建议这样做。