Partilhar via


Aviso C26818

A instrução Switch não abrange todos os casos. Considere a possibilidade de adicionar um rótulo «default» (es.79).

Observações

Essa verificação abrange o rótulo ausente default nas instruções switch que alternam um tipo que não é de enumeração, como int, chare assim por diante.

Para obter mais informações, consulte ES.79: Use default to handle common cases (only) nas C++ Core Guidelines.

Exemplo

Este exemplo tem um rótulo ausente default ao alternar entre um intarquivo .

void fn1();
void fn2();

void foo(int a)
{
    switch (a)
    {
        case 0:
            fn1();
            break;
        case 2:
            fn2();
            break;
    }
}

Solução

Para corrigir esse problema, insira um default rótulo para cobrir todos os casos restantes.

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 não for necessário tomar medidas default , insira um rótulo vazio default para indicar que os outros casos não foram esquecidos.

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