我正在阅读 C Primer Plus 中的 VLA,这本书严格地说,将 VLA 引入 C 是从 C99 标准开始的。每当我尝试在 for 循环的标头中声明循环控制变量时,gcc 都会通知我此操作仅在 C99 模式下允许。但是,以下测试代码可以编译并运行(尽管它会打印垃圾变量,考虑到没有初始化任何数组元素,这是可以预料的)。
#include <stdio.h>
int main(){
int x;
int i = 9;
int array[i];
for(x = 0; x < i; x++)
printf("%d\n", array[x]);
return 0;
}
如果我不在 C99 模式下,这怎么可能是合法的?