Поделиться через


Предупреждение C26818

Оператор Switch не охватывает все случаи. Рекомендуется добавить метку "default" (es.79).

Замечания

Эта проверка охватывает отсутствующую default метку в инструкциях switch, которые переключаются на тип, отличный от перечисления, например intchar, и т. д.

Дополнительные сведения см. в статье ES.79. Используйте default для обработки распространенных случаев (только) в основных рекомендациях C++.

Пример

В этом примере отсутствует default метка при переключении.int

void fn1();
void fn2();

void foo(int a)
{
    switch (a)
    {
        case 0:
            fn1();
            break;
        case 2:
            fn2();
            break;
    }
}

Решение

Чтобы устранить эту проблему, вставьте default метку для покрытия всех оставшихся случаев.

void fn1();
void fn2();
void default_action();

void foo(int a)
{
    switch (a)
    {
        case 0:
            fn1();
            break;
        case 2:
            fn2();
            break;
        default:
            default_action();
            break;
    }
}

default Если никаких действий не нужно предпринять, вставьте пустую default метку, чтобы указать, что другие случаи не были забыты.

void fn1();
void fn2();

void foo(int a)
{
    switch (a)
    {
        case 0:
            fn1();
            break;
        case 2:
            fn2();
            break;
        default:
            // do nothing for the rest of the cases
            break;
    }
}