如何禁用Clang警告“无大小写匹配常量切换条件”

时间:2018-11-18 09:21:32

标签: clang++ suppress-warnings

我正在一个使用另一个项目中的代码的项目中,并且该其他代码在编译期间给了我很多警告。我不想更改该代码(我的项目只是它们的代码的一个薄包装,并且我希望能够一直进行更新而不进行补丁修复),所以我想禁用这些警告,以便我专注于只是我自己的代码。

很遗憾,我看不到该文件的记录位置!

我收到的错误是:

warning: no case matching constant switch condition '2'

我有looked in the manual,并尝试过-Wno-switch-Wno-switch-bool-Wno-switch-enum,但没有一个使这个警告消失。我看不到手册中列出了此警告消息。

使用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;
}

1 个答案:

答案 0 :(得分:1)

恐怕没有this标志可以特别禁止显示此警告。 如果有,那么诊断将是:

-Wno-<what>

您只能使用warning: no case matching constant switch condition '2' [-W<what>] 来禁止所有所有警告,以禁止显示该警告, 我当然不建议。