Uyarı C26818

Switch deyimi tüm durumları kapsamaz. 'default' etiketi (es.79) eklemeyi göz önünde bulundurun.

Açıklamalar

Bu denetim, , charve gibi intsabit listesi olmayan bir türe geçiş yapılan switch deyimlerinde eksik default etiketi kapsar.

Daha fazla bilgi için bkz . ES.79: C++ Temel Yönergeleri'ndeki yaygın durumları işlemek için kullanma default (yalnızca) .

Örnek

Bu örnekte, üzerinde geçiş yaparken etiketi eksikdefault.int

void fn1();
void fn2();

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

Çözüm

Bu sorunu çözmek için kalan tüm servis taleplerini kapsayacak bir default etiket ekleyin.

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

Herhangi default bir işlem yapılması gerekmiyorsa, diğer servis taleplerinin unutulmadığını belirtmek için boş default bir etiket ekleyin.

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