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