Как отключить предупреждение Clang "нет совпадения регистров с постоянным условием переключения" - PullRequest
0 голосов
/ 18 ноября 2018

Я работаю над проектом, который использует код из другого проекта, и этот другой код дает мне кучу предупреждений во время компиляции.Я не хочу менять этот код (мой проект - всего лишь тонкая оболочка вокруг их кода, и я хочу иметь возможность загружать обновления без внесения исправлений все время), поэтому я хотел бы отключить эти предупреждения, чтобы сосредоточиться натолько мой собственный код.

К сожалению, я не вижу, где это задокументировано!

Я получаю ошибку:

warning: no case matching constant switch condition '2'

Я посмотрел в руководстве и пытались -Wno-switch, -Wno-switch-bool и -Wno-switch-enum, но ни одно из них не убирает это предупреждение.Я не вижу, где в руководстве указано это предупреждающее сообщение.

В Google я не смог найти ни одного параметра командной строки, соответствующего тексту ошибки.

Используя GitHub, я смог найти источник 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 голосов
/ 18 ноября 2018

Боюсь, что нет флага -Wno-<what>, который может специально подавить это предупреждение. Если бы был, то диагностика была бы:

warning: no case matching constant switch condition '2' [-W<what>]

Вы можете подавить его только путем подавления всех предупреждений с помощью -Wno-everything, что, конечно, я бы не советовал.

...