私はC Primer PlusのVLAについて読んでいます。この本では、CへのVLAの導入がC99標準から始まったと厳密に言います。 forループのヘッダー内でループ制御変数を宣言しようとすると、gccはこのアクションがC99モードでのみ許可されていることを通知します。ただし、次のテストコードはコンパイルと動作します(ただし、配列要素が初期化されていないと考えられるガベージ変数を出力します)。可変長配列は本当にC90では使用できませんか?
#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モードではない場合、どのようにこれはおそらく正当な可能性がありますか?
どのコンパイラを使用していますか?コンパイル時にどのような引数を渡していますか? –
あなたは警告を受けなければなりません:ISO C90は可変長配列 'array''を禁止します –
[この質問](http://stackoverflow.com/questions/5060799/c99-not-default-c-version-for-gcc)厳密には重複ではありませんが、ここでは重要です。 –