2017-01-17 14 views
0

constexprディメンションを使用せずに組み込み配列を宣言できることをどのように可能にするかを考え出すのに問題があります。つまり、次のブロックは私にとって完璧に機能します。コンパイル時に指定されなければならない固定サイズの配列が、constexprのサイズ定義を使って定義されていることは分かっていました。constexprのサイズを持たない組み込み配列の初期化

int size; 
int arr[size]; 

答えて

0

必ずしもconstexprである必要はありません。これは、C++ 11から導入されたものです。

あなたは、単純な数

int arr[12]; 

または定数

int const size = 7; 
int arr[size]; 

またはCスタイル

#DEFINE size 5 

int arr[size]; 

マクロを通じてサイズを割り当てることができますが、あなたは正しいです。次のコード

int size = 11; 
int arr[size]; 

が正しくありません。C++。

しかし、私はよく覚えていればCの一部のバージョンでは合法ですが、C++コンパイラも通常はCコンパイラです。したがって、通常許容的です。

特定のオプションでコンパイルして、言語に関する厳密なチェックを行うことができます。例によって、++ g ++および打ち鳴らすと、私は-ansi -pedantic

+0

非常に感謝しながら、-ansi、私は、今から-pedantic使用します何らかの理由で動作しない –

0

を使用する。また、サイズnの配列をこのように初期化することが可能である:

int n = 123; 
int* a; 
a = new int[n]; 
関連する問題