Partilhar via


Aviso C26818

A instrução Switch não abrange todos os casos. Considere adicionar um rótulo 'default' (es.79).

Comentários

Essa verificação aborda o rótulo ausente default em instruções de comutador que alternam por um tipo de não enumeração, como int, char e assim por diante.

Para obter mais informações, consulte ES.79: usar default para tratar casos comuns (somente) nas Diretrizes Principais do C++.

Exemplo

Este exemplo tem um rótulo ausente default ao comutar um int.

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 rótulo default 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 nenhuma ação default precisar ser tomada, 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;
    }
}