为什么无法使用C
编译此gcc
代码?
for(int j=0; j<n; j++){
//some code here
}
我知道有一个解决方案,包括从j
循环中声明For
。但是,gcc
计划中是否有C
选项可供选择?
答案 0 :(得分:4)
C99和后者允许此功能。以C99模式-std=C99
编译代码。
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
然后它应该编译