GCC错误:'for'循环初始声明在C99模式外使用

5
当我尝试使用make编译时,出现了error: 'for' loop initial declaration used outside C99 mode的错误。我在一篇维基文章中发现了解决方法:

在编译命令行中加入 -std=c99 参数:gcc -std=c99 foo.c -o foo

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

1
也许将“-std=c99”添加到“CFLAGS”变量中? - user529758
1
你也可以修复那个 for 循环! - Carl Norum
你在编辑完Makefile后有没有再次运行make命令? - Basile Starynkevitch
我在Makefile中的CFLAGS中添加了-stc=c99,然后运行了make,但是仍然出现了相同的错误。修复for循环解决了问题。 - Michael
应该是-std=c99而不是-stC=c99。你也可以将循环改为:int i; for (i=0;...;...)。 - JohnTortugo
糟糕,这里打错字了。是的,我按照你说的改变了循环。 - Michael
2个回答

10

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

如果不使用C99可消除此错误,您只需要在for循环所在的块的顶部声明迭代变量即可。

改为:

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

}

使用:

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

}

1
谢谢!CFLAGS 没有生效,但我改变了 for 循环,问题解决了。 - Michael
CFLAGS 应该已经生效了。请仔细检查您的 makefile 文件并再次运行 make 命令。您也可以尝试不使用 make 命令编译文件进行测试。 - JohnTortugo
@JohnTortugo:最终陷入了同样的情况 - CFLAGS=-std=c99 没有改变行为,但修复了循环... 编译 nettle-3.4.1,在 rsa-sign-tr.c:243 中出现问题的循环,顺便提一下。 - zb226

0

新的:我尝试了make CFLAGS=-std=c99,最终有用。

旧的:如果你已经在MakeFile中添加了CFLAGS=-std=c99,但仍然出现错误。

也许在make之前使用make clean是个好主意。


太疯狂了,我尝试了 make CFLAGS=-std=c99,最终有用了。 - wust_wgc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接