如果我的 switch 语句之一有一个不中断的情况,我希望收到警告/错误。这可能吗?
switch (i){
case 1:
cout << "one";
//forgot to break here, I want to be warned about this
case 2:
cout << "two";
break;
}
在 2012 年本地化会议上讨论了类似的 Clang 功能,但我需要在 MSVC2013 中使用它 http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Clang-Defending-C-from-Murphy-s-Million -猴子
理想情况下,当两个连续的主体没有被中断分开时,我想要一个警告,这样上面的例子就会失败,但这样不会:
switch (i){
case 1:
cout << "one";
break;
case 2:
case 3:
cout << "not one";
break;
}
MSVC 的 CppCoreCheck 添加了警告 C26819,它对未注释的失败发出警告。如果您之前没有使用过,请按以下步骤启用 CppCoreCheck。
我意识到这是一篇七年前的帖子了。
MS Visual Studio 2022(版本 17.4)在不使用 [[fallthrough]]
时添加
警告 C5262。
没有。
switch
的全部目的是您没有有到break
,但可以直接跳到下一个case
。
当您真正想要的是
if
语句时,编译器甚至提供禁止这样做的选项是没有意义的。