다음을 통해 공유


경고 C26818

Switch 문은 모든 사례를 다루지 않습니다. 'default' 레이블(es.79)을 추가하는 것이 좋습니다.

설명

이 검사는 열거형이 아닌 형식(예: intchar등)을 전환하는 switch 문에서 누락된 default 레이블을 다룹니다.

자세한 내용은 ES.79: C++ 핵심 지침에서 일반적인 사례(만)를 처리하는 데 사용합니다default.

예시

이 예제에서는 .를 전환할 때 누락된 default 레이블이 있습니다 int.

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