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

摘要:
原因是变量是在循环条件中声明的,这仅在C99标准中受支持,而在C90标准中不受支持。如果您想在不更改代码的情况下通过编译,请使用:gccsrc。c-std=c99 osrc,并报告错误:~/c_test$cc-std=gnu99src.csrc。c: 9:1:警告:returntypedefaultsto“int”[enabledbydefault]main(){^因为c99必须是intmain(return0;}在Linux中,使用vim编译的选项。c文件:1.没有编译链接的选项用法:#gccsrc。c功能:设置src c预处理、汇编、编译和链接以形成可执行文件。此处未指定输出文件。默认输出为a.out。

比如写出下面这段程序:

for (int i = 0; i < n; ++i)

do_something();

然后用gcc编译,会报‘for’ loop initial declarations are only allowed in C99 mode的错误。

原因是在循环条件中声明变量,只在C99标准中支持,C90标准不支持。

所以改成:

int i;

for (i = 0; i < n; ++i)

do_something();

这样编译就可以通过了。

想要不改代码的情况下编译通过,使用:

gcc src.c -std=c99 -o src

此时报错:

~/C_test$ cc -std=gnu99 src.c
src.c:9:1: warning: return type defaults to ‘int’ [enabled by default]
main(){
^

因为c99 必须是

int main(){

return 0;

}

的格式

在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,级别越大优化效果越好,但编译时间越长。

免责声明:文章转载自《error: ‘for’ loop initial declarations are only allowed in C99 mode》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇疲惫于时间管理术-应该如何把握时间TOGAF架构内容框架之架构制品(上)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

安装Linux应用软件的五种基本方法

要充分发挥电脑的作用,就得有大量的应用软件,完成不同的工作。在Windows环境中安装各种应用软件的思路与方法,想必大家早已熟悉。然而,在使用Linux时,我们却总会被这些本不应该是问题的问题所困扰:怎么安装应用软件?我的软件安装在什么地方?如何删除不要的应用软件?……   下面,我们就一起来认识一下这些方面的知识。 一、解析Linux应用软件安装包...

gcc/g++编译

1. gcc/g++在执行编译工作的时候,总共需要4步 (1).预处理,生成.i的文件[预处理器cpp] (2).汇编,将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs] (3).编译,将汇编语言文件编译为目标代码(机器代码)生成.o的文件[汇编器as] (4).链接,将目标代码,生成可执行程序[链接器ld] [参数详解]   -x lang...

4通用Makefile编写

a.c #include<stdio.h>#include "a.h" intmain() { printf("hello world "); printf("A= %d ",A); test_fun(); return 0; } a.h #define A 1 b.c #include <st...

unity shader 变种(多重编译 multi_compile)

一、定义 在unity中我们可以通过使用#pragma multi_compile或#pragma shader_feature指令来为shader创建多个稍微有点区别的shader变体。这个Shader被称为宏着色器(mega shader)或者超着色器(uber shader)。实现原理:根据不同的情况,使用不同的预处理器指令,来多次编译Shader代...

CentOS7 安装 OpenCV 的一些问题解决办法

  由于强迫症,实在受不了root权限的旧gcc才能使用boost而普通权限却是最新版gcc,经过一番折腾后,终于把配置全部弄好了,实际上就只需要把新版gcc的各个文件放到系统找到旧gcc的地方,并建立新版的gcc、g++的软链接就可以覆盖系统旧版的了,然后再重新编译boost即可。   弄好之后,我又开始折腾安装OpenCV了,可能由于最新版的gcc做了...

嵌入式Linux问题总结(一) Ubuntu常用命令和编译问题解决方法

  在进行嵌入式Linux的学习笔记的学习过程中,开发过程也遇到很多Ubuntu系统,编译,Makefile语法,设备树,网络以及线程,进程等细节知识,这部分知识十分零散,却是应用开发的基础,如果将其放在学习笔记系列中,又干扰整个开发的节奏,所以就在上个系列的基础上,新增加关于嵌入式Linux问题的总结,这里面记录的可能是常用命令,编译报错的解决方法,特殊...