【问题标题】:GCC error: 'for' loop initial declaration used outside C99 modeGCC 错误:在 C99 模式外使用的“for”循环初始声明
【发布时间】:2013-01-19 08:28:52
【问题描述】:

当我尝试使用 make 编译时,我得到了 error: 'for' loop initial declaration used outside C99 mode。我找到了一个wiki,上面写着

将 -std=c99 放入编译行:gcc -std=c99 foo.c -o foo

问题是我不知道如何在make 中指定它。我打开 Makefile,找到 CC = gcc 并将其更改为 CC = gcc -std=c99,但没有任何结果。有什么想法吗?

【问题讨论】:

  • 也许将-std=c99 添加到CFLAGS 变量中?
  • 你也可以修复 for 循环!
  • 在编辑了Makefile 之后,您是否再次运行make
  • 我在Makefile 中添加了-stc=c99CFLAGS 并运行make,但得到了同样的错误。修复 for 循环有效。
  • 这是 -std=c99 而不是 -stC=c99。您还可以选择将循环更改为: int i;对于 (i=0;...;...)

标签: linux gcc makefile


【解决方案1】:

将 CFLAGS=-std=c99 放在 Makefile 的顶部。

要在不使用 C99 的情况下消除错误,只需在 for 循环所在的块的顶部声明迭代器变量即可。

代替:

for (int i = 0; i < count; i++)
{

}

用途:

int i;
//other code
for (i = 0; i < count; i++) 
{

}

【讨论】:

  • 谢谢! CFLAGS 不起作用,但我更改了 for 循环并修复了它。
  • CFLAGS 应该有效。仔细检查你的makefile文件并再次运行make。可能你也可以尝试不使用make编译文件,只是为了测试。
  • @JohnTortugo: 以同样的情况结束 - CFLAGS=-std=c99 没有改变行为,但修复了循环......编译 nettle-3.4.1,在rsa-sign-tr.c:243 中冒犯循环,顺便说一句。
猜你喜欢
  • 2010-09-06
  • 2015-07-21
  • 2011-08-18
  • 2017-10-28
  • 2015-06-02
  • 2013-10-28
  • 2014-09-10
相关资源
最近更新 更多