我刚刚在我维护的一些代码中发现了以下部分:
switch (m) {
case 62: { // opening
// some declarations
// do some stuff
break;
case 63:
// do some other stuff
break;
} // closing
default:
// default stuff
break;
}
block 开头的意思是声明一些局部变量,但是右大括号放错了,出现在case 63
之后。
几个月来我从未注意到这一点,因为它在 Visual Studio 2010 中编译得很好。我尝试调试它,两种情况都工作正常。
怎么可能?这是正确的 C 语法吗?
最佳答案
case
语句就像 goto 标签,所以这是允许的语法。 Duff's device是一个著名的用例。
尽量避免这样做。
关于C:错误嵌套的 switch/case block 出人意料地有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14570786/