2016-12-28 9 views
1

私の理解では、C++コンパイラは変数を持つ配列を初期化することはできませんが、このプログラムはコンパイルされ、自分のコンピュータ上で実行されますが、それはなぜですか? C++でこのC++プログラムはなぜコンパイルされますか?

// this should not compile because there is a variable in the array declaration 

#include <iostream> 

int main(){ 
    int x = 5; 
    int ar[x]; 
    printf("hello world\n"); 
} 
+1

どのコンパイラを使用していますか? *可変長配列の拡張があります。* – jaggedSpire

+0

@fredコンパイラには、VLAを使用できる独自の言語拡張機能があります。コンパイラのエラーメッセージを表示するには、それらをオフにする必要があります。 –

答えて

2

、可変長配列は合法ではありません。 G ++ではこれを という拡張子で許可しています(Cでは許可しているので).G ++ではこれを行うことができます。

これを確認してください。answer/answer

+1

注:g ++はCが許可する前にこの拡張子を許可しました –

+0

@ M.M .: yes true。指してくれてありがとう。 – coderredoc

-3

配列のサイズは可変ではないかもしれません。

+4

OPは、標準で許可されているかどうかを知りたくない - 既に*許可されていないことを知っています。彼らはコンパイラがなぜそれらを放棄しているのかを知りたい。 – jaggedSpire

関連する問題