Ostrzeżenie C26818

Instrukcja Switch nie obejmuje wszystkich przypadków. Rozważ dodanie etykiety "default" (es.79).

Uwagi

Ta kontrola obejmuje brakującą default etykietę w instrukcjach switch, które przełączają się na typ nieliczeniowy, taki jak int, chari tak dalej.

Aby uzyskać więcej informacji, zobacz ES.79: Używanie default do obsługi typowych przypadków (tylko) w podstawowych wytycznych dotyczących języka C++.

Przykład

W tym przykładzie brakuje default etykiety podczas przełączania intsię na .

void fn1();
void fn2();

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

Rozwiązanie

Aby rozwiązać ten problem, wstaw etykietę default , aby pokryć wszystkie pozostałe przypadki.

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

Jeśli nie default trzeba podejmować żadnych działań, wstaw pustą default etykietę, aby wskazać, że inne przypadki nie zostały zapomniane.

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