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
, char
i 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 int
się 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;
}
}