C-int For循环gcc中的第一个声明

时间:2014-01-02 16:17:06

标签: c gcc

为什么无法使用C编译此gcc代码?

for(int j=0; j<n; j++){
 //some code here
}

我知道有一个解决方案,包括从j循环中声明For。但是,gcc计划中是否有C选项可供选择?

2 个答案:

答案 0 :(得分:4)

C99和后者允许此功能。以C99模式-std=C99编译代码。

C11:6.8.5.3 for语句:

  

1声明

for ( clause-1 ; expression-2 ; expression-3 ) statement
     

表现如下:表达式 expression-2 是控制表达式   在每次执行循环体之前进行评估。表达式表达式-3 是   在每次执行循环体后评估为void表达式。 如果子句-1 是   声明 1 ,它声明的任何标识符的范围是声明的剩余部分和整个循环,包括其他两个表达式;它是在控制表达式的第一次评估之前按执行顺序到达的。如果 clause-1 是一个表达式,则在第一次评估控制表达式之前将其计算为void表达式.158)


1.重点是我的。

答案 1 :(得分:3)

错误消息说明了这一切(至少在gcc-4.6.3上):

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

如果在编译命令中添加-std=c99

gcc -std=c99 test.c

然后它应该编译