0
int n=10;
int arr[n];

このコードは私の GCC コンパイラで問題なく動作します。静的配列のサイズはコンパイル時に割り当てられませんか? このコードはエラーを生成するべきではありませんか?

4

1 に答える 1

2

可変長配列はC99機能 ( ではオプションC11) であり、モードでない場合は拡張gccとしてこれをサポートします。これを確認する簡単な方法の 1 つは、次を使用することです。c99gcc

gcc -std=c89 -pedantic

次の警告が表示されます。

warning: ISO C90 forbids variable length array ‘arr’ [-Wvla]

ただし、を使用してビルドするgcc -std=c99 -pedanticと、警告は表示されません。C99 ドラフト標準セクション6.7.5.2 Array declarators パラグラフ 4から:

[...] サイズが整数定数式で、要素の型に既知の定数サイズがある場合、配列型は可変長配列型ではありません。それ以外の場合、配列タイプは可変長配列タイプです。

于 2013-08-27T20:12:23.447 に答える