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
, char
e 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;
}
}