Bagikan melalui


Peringatan C26818

Pernyataan switch tidak mencakup semua kasus. Pertimbangkan untuk menambahkan label 'default' (es.79).

Keterangan

Pemeriksaan ini mencakup label yang hilang default dalam pernyataan pengalihan yang beralih ke jenis non-enumerasi, seperti , , chardan sebagainyaint.

Untuk informasi selengkapnya, lihat ES.79: Gunakan default untuk menangani kasus umum (hanya) di Panduan Inti C++.

Contoh

Contoh ini memiliki label yang hilang default saat beralih melalui int.

void fn1();
void fn2();

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

Solusi

Untuk memperbaiki masalah ini, sisipkan default label untuk mencakup semua kasus yang tersisa.

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

Jika tidak ada default tindakan yang perlu diambil, sisipkan label kosong default untuk menunjukkan bahwa kasus lain belum dilupakan.

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