Ben*_*nmj 2 iphone cocoa objective-c ios
在检查一个无法运行的代码时,我意识到我从switch语句中删除了"case".有缺陷的代码具有以下格式
switch (foo) {
firstElem:
...
break;
secondElem:
...
break;
}
Run Code Online (Sandbox Code Playgroud)
凡firstElem和secondElem是一个枚举列表的一部分.当我单步执行代码时,它会跳到switch结束括号,因为它找不到匹配项.
这很容易修复,但它让我感到不安,因为XCode在编译或运行时都没有抱怨.为什么?
switch case更难以解释的内容?case语句以产生一些其他行为(我一无所知)?更新:我正在使用XCode 4.4.1(虽然我会在一秒内升级).这是既定项目的一部分.**
进一步的更新和参考 Kevin Ballard正确地指出我不小心定义了标签.有关标签和GOTO的更多信息,您可以在C编程语言 3.8中找到讨论,其中Kernighan和Richie得出结论(尽管它们可能在错误检查中有用)
...依赖于goto语句的代码通常比没有gotos的代码更难理解和维护.虽然我们对这个问题没有教条,但似乎goto语句应该很少使用,如果有的话.
你所拥有的是你身上的一堆常规旧标签switch.这完全合法.Xcode没有抱怨,因为没有case语句的开关是合法的,虽然有点奇怪.
也就是说,clang在看到switch没有case陈述的陈述时会发出警告.你在使用GCC吗?
| 归档时间: |
|
| 查看次数: |
239 次 |
| 最近记录: |