Warnung C26818

Switch-Anweisung deckt nicht alle Fälle ab. Erwägen Sie das Hinzufügen einer "default"-Bezeichnung (es.79).

Hinweise

Diese Überprüfung behandelt die fehlende default Bezeichnung in Switch-Anweisungen, die über einen Nicht-Enumerationstyp wechseln, z int. B. , charusw.

Weitere Informationen finden Sie unter ES.79: Verwenden, default um häufige Fälle (nur) in den C++-Kernrichtlinien zu behandeln.

Beispiel

In diesem Beispiel ist beim Umschalten eine intfehlende default Beschriftung vorhanden.

void fn1();
void fn2();

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

Lösung

Um dieses Problem zu beheben, fügen Sie eine default Beschriftung ein, um alle Fälle neu zu behandeln Standard.

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

Wenn keine default Aktion ausgeführt werden muss, fügen Sie eine leere default Bezeichnung ein, um anzugeben, dass die anderen Fälle nicht vergessen wurden.

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