可変長配列 (Variable Length Array)
伝統的なC言語では、
int a[
10
];
のような配列宣言の配列の大きさは、「定数」で無ければならない。 しかし、
gccでは文法が(勝手に)拡張されており、配列の大きさに変数を書くことが出来る。
int n; scanf("%d", &n); int a[
n
];
-pedantic-errors というオプションを付けると拡張機能を禁止することができ、 この場合はエラーになる。
また、C99 (1999) ではこの仕様が正式に採用されたが、 C11 (2011) ではオプション扱いになった。
一般論として、この機能に頼ったプログラムを書くべきではないと思う。