Sdílet prostřednictvím


Upozornění C26818

Příkaz Switch nepokrývá všechny případy. Zvažte přidání popisku 'default' (es.79).

Poznámky

Tato kontrola popisuje chybějící default popisek v příkazech switch, které přepínají typ výčtu, například int, charatd.

Další informace najdete v tématu ES.79: Slouží default ke zpracování běžných případů (pouze) v pokynech pro C++ Core Guidelines.

Příklad

V tomto příkladu default chybí popisek při přepínání .int

void fn1();
void fn2();

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

Řešení

Pokud chcete tento problém vyřešit, vložte default popisek pro pokrytí všech zbývajících případů.

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

Pokud není potřeba provést žádnou default akci, vložte prázdný default popisek, který indikuje, že ostatní případy nebyly zapomenuty.

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