3

私は次の機能を持っています

 void someFun(int* ar, const int size) {
      int newAr[size];
      //do something 
 }

そして、この行で 3 つのエラーが発生します。

Error   1   error C2057: expected constant expression   
Error   2   error C2466: cannot allocate an array of constant size 0    
Error   3   error C2133: 'newAr' : unknown size 

ただし、varサイズは一定です。そしてgccを使用すると、これはエラーなしでコンパイルされます。ここでvs2008(またはおそらくVisual C ++全般)で何が間違っているのか、なぜ間違っているのか教えていただけますか?前もって感謝します。

4

3 に答える 3

3

このパラメーターは、コンパイル時に定数const int sizeであることを意味するものではありません。では、 の値を変更できないことをsize単に意味します。ただし、 の値は、の異なる呼び出し間で変更される可能性があります。someFunsizesizesomeFun

C/C++ の配列には、コンパイル時に既知のサイズが必要です。

于 2013-07-03T22:19:30.980 に答える