如果开关盒掉落,我怎样才能使MSVC发出警告或失败?

时间:2014-02-20 13:52:58

标签: c++ visual-c++ warnings compiler-warnings

如果我的某个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-Monkeys

理想情况下,我想要一个警告,当两个连续的物体没有被一个中断分开时,上面的例子会失败,但这不会:

switch (i){
case 1:
    cout << "one";
    break;
case 2:
case 3:
    cout << "not one";
    break;
}

2 个答案:

答案 0 :(得分:1)

MSVC 的 CppCoreCheck 添加了警告 C26819,它对未注释的失败发出警告。如果您以前没有使用过,请查看如何enable CppCoreCheck

我意识到这是一个七年前的帖子。

答案 1 :(得分:-2)

switch的全部目的是 break,但可以转而使用下一个case

当你真正想要的是if语句时,编译器甚至不提供禁止它的选项是没有意义的。