私は C Primer Plus の VLA について読んでいますが、この本は C への VLA の導入は 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 モードではない場合、どうしてこれが合法になるのでしょうか?