警告 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;
}
}
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈