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 , , char
dan 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;
}
}