Предупреждение C26818
Оператор Switch не охватывает все случаи. Рекомендуется добавить метку "default" (es.79).
Замечания
Эта проверка охватывает отсутствующую default
метку в инструкциях switch, которые переключаются на тип, отличный от перечисления, например int
char
, и т. д.
Дополнительные сведения см. в статье ES.79. Используйте default для обработки распространенных случаев (только) в основных рекомендациях C++.
Пример
В этом примере отсутствует default
метка при переключении.int
void fn1();
void fn2();
void foo(int a)
{
switch (a)
{
case 0:
fn1();
break;
case 2:
fn2();
break;
}
}
Решение
Чтобы устранить эту проблему, вставьте default
метку для покрытия всех оставшихся случаев.
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;
}
}
default Если никаких действий не нужно предпринять, вставьте пустую default
метку, чтобы указать, что другие случаи не были забыты.
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;
}
}