我有一个复杂的switch陈述,我忘了break在其中一个结尾处放一个case.这是非常合法的,因此我对下一个进行了反复尝试case.
如果我忽略break发表声明,有没有办法让gcc警告(甚至更好,失败)?
我意识到有许多有效的用例(我经常在我的代码中使用它们),正如这个问题所示,所以很明显这样的警告(或失败)需要一个简单的弃权,以便我可以很容易地说,"我做我想在这里堕落."
有没有办法告诉gcc这样做?
如果我的 switch 语句之一的 case 没有中断,我想收到警告/错误。这可能吗?
switch (i){
case 1:
cout << "one";
//forgot to break here, I want to be warned about this
case 2:
cout << "two";
break;
}
Run Code Online (Sandbox Code Playgroud)
在 2012 年原生会议上讨论了类似的 Clang 功能,但我需要它用于 MSVC2013 http://channel9.msdn.com/Events/GoingNative/GoingNative-2012/Clang-Defending-C-from-Murphy-s-Million-Monkeys
理想情况下,当两个连续的主体没有被中断分隔时,我想要一个警告,这样上面的例子就会失败,但这不会:
switch (i){
case 1:
cout << "one";
break;
case 2:
case 3:
cout << "not one";
break;
}
Run Code Online (Sandbox Code Playgroud)