如何使gcc/clang警告switch语句中缺少中断

如何使gcc/clang警告switch语句中缺少中断,gcc,coding-style,switch-statement,clang,gcc-warning,Gcc,Coding Style,Switch Statement,Clang,Gcc Warning,有没有办法让gcc或clang警告switch语句中缺少中断 具体地说,我几乎总是希望case语句以中断结束,如果我不这样做,我可以让编译器抱怨,那就太好了。如果它能找到一个中断声明或一个“//fall-through”评论,那就更好了 有没有一种不同的解决方案可以帮助人们避免把事情搞砸?据我所知,在gcc中,这仍然是一个未分配的功能请求 您曾问,如果它能找到中断声明或“//fall-through”评论,那就太好了 还记得亨利·斯宾塞的第一部《坚强》吗 一,。你应该经常跑步 看起来您需要的是P

有没有办法让
gcc
clang
警告switch语句中缺少中断

具体地说,我几乎总是希望case语句以中断结束,如果我不这样做,我可以让编译器抱怨,那就太好了。如果它能找到一个中断声明或一个“//fall-through”评论,那就更好了


有没有一种不同的解决方案可以帮助人们避免把事情搞砸?

据我所知,在gcc中,这仍然是一个未分配的功能请求


您曾问,如果它能找到中断声明或“//fall-through”评论,那就太好了

还记得亨利·斯宾塞的第一部《坚强》吗

一,。你应该经常跑步

看起来您需要的是PC Lint/flexelint。以下是警告616:

616控制流到case/default中 控件中的case语句或默认语句 在上面这是故意的还是程序员忘记插入 中断声明?如果这是故意的,请发表评论 在标记为中的语句之前:


使用叮当作响的中继线,使用
-Wimplicit故障排除
。如果您使用的是C++11,则可以使用
[[clang::fallthrough]]标记有意的故障语句(有关详细信息,请参阅此属性的详细信息)。该警告(尚未)检查是否有“漏掉”评论。这个特性不会出现在即将发布的3.1版本的Clang中,但它(可能!)会出现在3.2中


Edit:Clang的属性现在是C++17的一部分,名称为
[[fallthrough]]

可能重复我看到您刚刚签入此功能。谢谢感谢亚历山大·科尔尼恩科!亚历山大应该得到这里所有的荣誉,我所做的只是回顾它。:)C++17现在具有[[fallthrough]]属性。gcc 7还将具有-Wimplicit fallthrough(已包含在Fedora 26预发行版中)。有趣的是,我无法让clang 3.9.1报告故障,即使它接受该标志。@proski clang仅在有办法抑制警告的配置中发出警告。否则,这将是非常恼人的人建设与-Weverything。
case 'a': a = 0;
   /* fall through */
case 'b': a++;