警告 C26818
switch 语句不涵盖所有情况。 考虑添加一个“default”标签(es.79)。
备注
此检查涵盖了切换非枚举类型(例如 int
、char
等)的 switch 语句中缺少的 default
标签。
有关详细信息,请参阅 C++ Core Guidelines 中的 ES.79:使用 default 处理常见情况(仅限)。
示例
此示例在切换 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;
}
}