zl程序教程

您现在的位置是:首页 >  系统

当前栏目

嵌入式linux开发,编译报错:error: ‘for’ loop initial declarations are only allowed in C99 mode

Linux嵌入式开发 报错 Error for in 编译
2023-09-14 09:09:33 时间

一、问题描述

在嵌入式linux开发过程中,进行编译,报错如下

src/util/Vector.c:94:9: error: ‘for’ loop initial declarations are only allowed in C99 mode
         for (int j = V->length++; j > i; j--)
         ^
src/util/Vector.c:94:9: note: use option -std=c99 or -std=gnu99 to compile your code
src/util/Vector.c: In function ‘Vector_remove’:
src/util/Vector.c:123:9: error: ‘for’ loop initial declarations are only allowed in C99 mode
         for (int j = i; j < V->length; j++)
         ^

二、问题分析

gcc编译,是基于低于C99标准编译的。在低于c99的标准中, for循环内定义变量是不允许的。

三、解决方案

方法一

修改代码

int j;
for (j = i; j < V->length; j++)

方法二

gcc指定使用c99标准进行编译

gcc -std=c99

方法三

在Makefile中指定使用c99标准进行编译

CFLAGS += -std=c99