error: ‘for‘ loop initial declarations are only allowed in C99 mode

这篇博客介绍了在Linux环境下,使用GCC编译C程序时遇到的问题。当尝试在for循环中直接声明变量时,GCC报错提示需要使用C99模式。原来,这种在for循环中初始化变量的语法在C89标准中并不被支持,而在C99标准中则是允许的。解决方法是在编译时添加-std=c99或-std=gnu99选项。同时,文章列举了使用GCC编译的不同阶段选项,如-E进行预处理,-S汇编,-c编译,以及-O进行优化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

linux系统下的c编程与windows有所不同,如果你在用gcc编译代码的时候提示‘for’ loop initial declarations are only allowed in C99 mode,可能就是因为你在loop循环比如for中使用未预先定义的变量,比如:

error: 'for' loop initial declarations are only allowed in C99 mode
note: use option -std=c99 or -std=gnu99 to compile your code

这是因为在gcc中不支持直接在for循环中初始化变量:

	for(int i=0; i<len; i++) {
	}

这种写法在vc里是没有错的,而在gcc就会提示错误,要求遵守c89标准,c89标准是不支持上述写法的,必须先定义i变量:

int i;
for(i=0;i<len;i++){
}

这是因为gcc基于c89标准,换成C99标准就可以在for循环内定义i变量了:

gcc src.c -std=c99 -o src

在Linux下,使用vim来 编译 .c文件的选项:

  1. 无选项编译链接
    用法:#gcc src.c
    作用:将src.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。

  2. 选项 -o
    用法:#gcc src.c -o src
    作用:将src.c预处理、汇编、编译并链接形成可执行文件src。-o选项用来指定输出文件的文件名。

  3. 选项 -E
    用法:#gcc -E src.c -o src.i
    作用:将src.c预处理输出src.i文件。

  4. 选项 -S
    用法:#gcc -S src.i
    作用:将预处理输出文件src.i汇编成src.s文件。

  5. 选项 -c
    用法:#gcc -c src.s
    作用:将汇编输出文件src.s编译输出src.o文件。

  6. 无选项链接
    用法:#gcc test.o -o src
    作用:将编译输出文件src.o链接成最终可执行文件src。

  7. 选项-O
    用法:#gcc -O1 src.c -o src
    作用:使用编译优化级别1编译程序。级别为1~3,级别越大优化效果越好,但编译时间越长。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ʚ兔子的先森ɞ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值