Advertencia C26818
La instrucción switch no cubre todos los casos. Considere la posibilidad de agregar una etiqueta "default" (es.79).
Comentarios
Esta comprobación cubre la etiqueta default
que falta en las instrucciones switch que cambian a un tipo de no enumeración, como int
, char
, etc.
Para más información, consulte ES.79: Uso default para controlar casos comunes (solo) en C++ Core Guidelines.
Ejemplo
Este ejemplo tiene una etiqueta default
que falta al cambiar a un elemento int
.
void fn1();
void fn2();
void foo(int a)
{
switch (a)
{
case 0:
fn1();
break;
case 2:
fn2();
break;
}
}
Solución
Para corregir este problema, inserte una etiqueta default
para cubrir el resto de casos.
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;
}
}
Si no es necesario realizar ninguna acción default, inserte una etiqueta default
vacía para indicar que no se han olvidado los demás casos.
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;
}
}