警告 C26818

Switch 語句未涵蓋所有案例。 請考慮新增 ' default ' 標籤 (es.79)。

備註

這項檢查涵蓋 switch 語句中遺漏 default 的標籤,這些標籤會切換至非列舉類型,例如 intchar 等等。

如需詳細資訊,請參閱 ES.79:使用 default 來處理 C++ 核心指導方針中的常見案例(僅限)。

範例

此範例在切換 時遺漏了 intdefault 標。

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