경고 C26818
Switch 문은 모든 사례를 다루지 않습니다. 'default' 레이블(es.79)을 추가하는 것이 좋습니다.
설명
이 검사는 열거형이 아닌 형식(예: int
char
등)을 전환하는 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;
}
}