Delen via


Waarschuwing C26818

Switch-instructie geldt niet voor alle gevallen. Overweeg een label (defaultes.79) toe te voegen.

Opmerkingen

Deze controle heeft betrekking op het ontbrekende default label in switchinstructies die overschakelen over een niet-opsommingstype, zoals intchar, enzovoort.

Zie ES.79 voor meer informatie: Gebruiken default om veelvoorkomende zaken (alleen) in de C++-kernrichtlijnen af te handelen.

Voorbeeld

In dit voorbeeld ontbreekt default een label bij het overschakelen van een int.

void fn1();
void fn2();

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

Solution

U kunt dit probleem oplossen door een default label in te voegen om alle resterende gevallen te behandelen.

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

Als er geen default actie moet worden ondernomen, voegt u een leeg default label in om aan te geven dat de andere gevallen niet zijn vergeten.

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