gpt4 book ai didi

iphone - 为什么在 switch...case 中不省略 "case"在 XCode 中抛出错误或警告?

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:09:19 25 4
gpt4 key购买 nike

在检查一段无法运行的代码时,我意识到我在 switch 语句中遗漏了“case”。错误代码具有以下格式

switch (foo) {
firstElem:
...
break;
secondElem:
...
break;
}

其中 firstElemsecondElem 是枚举列表的一部分。当我单步执行代码时,它从 switch 跳到右括号,因为它找不到匹配项。

这很容易修复,但它让我感到不安,因为 XCode 在编译或运行时根本没有提示为什么?

  1. 语言结构中是否有某些东西使 switch case 更难解释?
  2. 是否有过这样的情况,您希望省略 case 语句以产生一些其他行为(我对此一无所知)?
  3. 在其他语言中会出现这种情况吗?我知道 Objective-C 是“C 的严格超集”,所以我假设 C 中也可能发生同样的情况(取决于编译器)。 Java呢? C++?

更新:我正在使用 XCode 4.4.1(尽管我会在几秒钟内升级)。这是已建立项目的一部分。**

进一步更新和引用 Kevin Ballard 正确地指出我不小心定义了标签。有关标签和 GOTO 的更多信息,您可以在 The C Programming Language 3.8 中找到讨论,其中 Kernighan 和 Richie 得出结论(尽管它们可能在错误检查中有一些用处)

... code that relies on goto statements is generally harder to understand and to maintain than code without gotos. Although we are not dogmatic about the matter, it does seem that goto statements should be used rarely, if at all.

最佳答案

switch 中有一堆常规的旧标签。这是完全合法的。 Xcode 没有提示,因为没有 case 语句的 switch 是合法的,尽管有点奇怪。

也就是说,clang 会在看到没有 case 语句的 switch 语句时发出警告。你在使用 GCC 吗?

关于iphone - 为什么在 switch...case 中不省略 "case"在 XCode 中抛出错误或警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12185037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com