2016-03-27 9 views
-1
void foo (int k) 
{ 

int C[size(k)][size(k)]; 

C[1][2] = 4; 

std::cout << C[1][2]; 

} 

定数でない変数に基づいて配列を宣言しますか?このコードが正しくコンパイルされてどのように

+0

あなたは、生の配列として標準C++でこれを行うことはできません。代わりに 'std :: vector >'を使用してください。 –

+0

しかし、g ++で正しくコンパイルされています。 –

+1

GCCにはVLA(可変長配列)をサポートする拡張機能があります。 –

答えて

1

あなたのコードは、Gでコンパイル++それは拡張機能として可変長配列をサポートしているからです。 6.19 Arrays of Variable Length

これは標準のC++の機能ではないため、他のコンパイラでは必ずしも機能しません。

あなたがg ++、この種のものに文句を言うそれを-pedanticを与えたい場合。

+0

ありがとうございます、明確な答えです。 –

関連する問題