For循环gcc中的C-int第一个声明
为什么这个For循环gcc中的C-int第一个声明,c,gcc,C,Gcc,为什么这个C代码不能用gcc编译 for(int j=0; j<n; j++){ //some code here } for(int j=0;jC99和后者允许此功能。在C99模式下编译代码-std=C99 C11:6.8.5.3对于以下语句: 1声明 for ( clause-1 ; expression-2 ; expression-3 ) statement 行为如下:表达式-2是 在每次执行循环体之前求值。表达式-3为 在每次执行循环体后作为无效表达式进行计算。如果子句-1
C
代码不能用gcc
编译
for(int j=0; j<n; j++){
//some code here
}
for(int j=0;jC99和后者允许此功能。在C99模式下编译代码-std=C99
C11:6.8.5.3对于以下语句:
1声明
for ( clause-1 ; expression-2 ; expression-3 ) statement
行为如下:表达式-2是
在每次执行循环体之前求值。表达式-3为
在每次执行循环体后作为无效表达式进行计算。如果子句-1是
声明1,它声明的任何标识符的范围都是声明的剩余部分和整个循环,包括其他两个表达式;它是在控制表达式的第一次求值之前按照执行顺序到达的。如果子句-1是一个表达式,则在第一次求值之前它将作为一个空表达式求值关于控制表达式的定义(158)
1.重点是我的。错误消息说明了一切(至少在gcc-4.6.3
):
如果在编译命令中添加-std=c99
:
gcc -std=c99 test.c
那么它应该编译你说的“不能执行”是什么意思?当然,如果它被编译,那么您就可以执行它了。。。!!??添加一条错误消息会使这个问题变得清晰。使用-std=c99或-std=gnu99
gcc -std=c99 test.c