【问题标题】:‘for’ loop initial declaration used outside C99 mode [duplicate]在 C99 模式外使用的“for”循环初始声明 [重复]
【发布时间】:2011-08-18 05:29:25
【问题描述】:

可能重复:
How do I fix “for loop initial declaration used outside C99 mode” GCC error?

为什么我必须在 for 循环语句之外声明一个循环变量?我收到一个 gcc (MacOSX) 错误,内容如下:

错误:在 C99 模式外使用的“for”循环初始声明

如果我在循环语句之外定义我的循环变量,那么 gcc 就会停止抱怨。

【问题讨论】:

  • 因为在 ANSI C 和 C89 中,变量只能在文件范围或块的开头声明。 C99 在 for 循环子句中引入了变量声明。
  • 考虑在 Mac OS X 上使用 Clang 代替 GCC。Apple 在可预见的未来不会更新 GCC。
  • Chuck 链接到的问题的完全相同的副本。也就是说,只需设置 -std=c99 或 -std=gnu99 即可。
  • 我确实搜索过旧问题,但由于某种原因错过了它们。下次我会做一个深度搜索。

标签: objective-c for-loop


【解决方案1】:

正如错误所暗示的,这是因为在 C99 之前不允许在 for 循环的条件内声明变量,并且您使用的是较旧的语言标准。如果您直接编译,请使用-std=c99 标志。在 Xcode 中,转到目标的“编译器 - 语言”选项并将语言标准设置为 C99 或 GNU99。

【讨论】:

    【解决方案2】:

    您需要使用选项-std=c99进行编译。

    例如:

    $ gcc -std=c99 code.c
    

    【讨论】:

      猜你喜欢
      • 2015-07-21
      • 2013-01-19
      • 2010-09-06
      • 2015-06-02
      • 2017-10-28
      • 2014-09-10
      • 1970-01-01
      相关资源
      最近更新 更多