wap*_*p26 11 c visual-studio-2010
我刚刚在我维护的一些代码中发现了以下部分:
switch (m) {
case 62: { // opening
// some declarations
// do some stuff
break;
case 63:
// do some other stuff
break;
} // closing
default:
// default stuff
break;
}
Run Code Online (Sandbox Code Playgroud)
块打开是为了声明一些局部变量,但是右括号被错误地放置并且发生在后面case 63.
我几个月都没有注意到这一点,因为它在Visual Studio 2010中编译得很好.我已经尝试过调试它,两种情况都可以正常工作.
怎么会这样 ?这是正确的C语法吗?
6.8.1标记语句,C99
任何语句都可以在前缀之前声明标识符作为标签名称.标签本身并不会改变控制流程,而这种控制流程在它们之间继续畅通无阻.
即花括号对开关盒标签的工作方式没有影响,但它只是创建了一个新的范围.
这就解释了为什么看似错位的花括号不会导致语法错误.
| 归档时间: |
|
| 查看次数: |
295 次 |
| 最近记录: |