int n=10;
int arr[n];
このコードは私の GCC コンパイラで問題なく動作します。静的配列のサイズはコンパイル時に割り当てられませんか? このコードはエラーを生成するべきではありませんか?
int n=10;
int arr[n];
このコードは私の GCC コンパイラで問題なく動作します。静的配列のサイズはコンパイル時に割り当てられませんか? このコードはエラーを生成するべきではありませんか?
可変長配列は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から:
[...] サイズが整数定数式で、要素の型に既知の定数サイズがある場合、配列型は可変長配列型ではありません。それ以外の場合、配列タイプは可変長配列タイプです。