Avviso C26818

L'istruzione Switch non copre tutti i casi. Prendere in considerazione l'aggiunta di un'etichetta 'default' (es.79).

Osservazioni:

Questo controllo illustra l'etichetta mancante default nelle istruzioni switch che passano a un tipo non di enumerazione, ad esempio int, chare così via.

Per altre informazioni, vedere ES.79: Usare default per gestire i casi comuni (solo) nelle linee guida di base di C++.

Esempio

In questo esempio è presente un'etichetta mancante default quando si passa a un oggetto int.

void fn1();
void fn2();

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

Soluzione

Per risolvere questo problema, inserire un'etichetta default per coprire tutti i case rimanenti.

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

Se non è necessario eseguire alcuna default azione, inserire un'etichetta vuota default per indicare che gli altri casi non sono stati dimenticati.

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