
[英]How do I fix “for loop initial declaration used outside C99 mode” GCC error?
[英]How do I fix “for loop initial declaration used outside C99 mode” GCC error?
我正在尝试解决3n + 1问题,并且有一个看起来像这样的for
循环:
for(int i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}
不幸的是,当我尝试使用GCC进行编译时,出现了此错误:
3np1.c:15:错误:“ for”循环初始声明在C99模式之外使用
我不知道什么是C99模式。 有任何想法吗?
有一个启用C99模式的编译器开关,除其他功能外,它还允许在for循环内声明变量。 要打开它,请使用编译器开关-std=c99
或如@OysterD所说,在循环外声明变量。
要在CodeBlocks中切换到C99模式,请执行以下步骤:
单击“ 项目/构建选项” ,然后在“ 编译器设置”选项卡中选择“子选项卡” “ 其他选项” ,然后在文本区域中放置-std=c99
,然后单击“ 确定” 。
这将为您的编译器打开C99模式。
我希望这会对某人有所帮助!
我也遇到了这个错误。
for (int i=0;i<10;i++) { ..
在C89 / C90标准中无效。 正如OysterD所说,您需要执行以下操作:
int i;
for (i=0;i<10;i++) { ..
C99和更高版本的C语言允许使用您的原始代码。
C99的新功能
如果您在C语言中进行编译
for (int i=0;i<10;i++) { ..
至
int i;
for (i=0;i<10;i++) { ..
您也可以使用C99开关套件进行编译。 将-std = c99放在编译行中:
gcc -std=c99 foo.c -o foo
REF: http ://cplusplus.syntaxerrors.info/index.php?title='for'_loop_initial_declaration_used_outside_C99_mode
对于任何尝试使用自动生成实用程序(例如Make)从外部源编译代码的人,为了避免必须跟踪显式gcc编译调用,可以设置环境变量。 在命令提示符下输入或放入.bashrc(或在Mac上为.bash_profile):
export CFLAGS="-std=c99"
请注意,如果遇到需要C ++ 11的C ++编译的类似情况,则可以应用类似的解决方案,您可以使用:
export CXXFLAGS="-std=c++11"
我有同样的问题,它的工作原理是您只需要在循环外声明i
:
int i;
for(i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}
Jihene Stambouli最直接地回答了OP问题。 为什么
for(int i = low; i <= high; ++i)
{
res = runalg(i);
if (res > highestres)
{
highestres = res;
}
}
产生错误;
3np1.c:15: error: 'for' loop initial declaration used outside C99 mode
答案是
for(int i = low...
应该
int i;
for (i=low...
在Code :: Blocks 16.01中启用C99模式
对于Qt-creator:只需将下一行添加到* .pro文件中...
QMAKE_CFLAGS_DEBUG = \
-std=gnu99
QMAKE_CFLAGS_RELEASE = \
-std=gnu99
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.