警告 C26818
Switch 語句未涵蓋所有案例。 請考慮新增 ' default ' 標籤 (es.79)。
備註
這項檢查涵蓋 switch 語句中遺漏 default
的標籤,這些標籤會切換至非列舉類型,例如 int
、 char
等等。
如需詳細資訊,請參閱 ES.79:使用 default 來處理 C++ 核心指導方針中的常見案例(僅限)。
範例
此範例在切換 時遺漏了 int
卷 default
標。
void fn1();
void fn2();
void foo(int a)
{
switch (a)
{
case 0:
fn1();
break;
case 2:
fn2();
break;
}
}
解決方案
若要修正此問題,請插入卷 default
標以涵蓋所有剩餘的情況。
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;
}
}
如果不需要採取任何 default 動作,請插入空白 default
標籤,以指出其他案例尚未忘記。
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;
}
}