Visual Studio 2015でコードを実行しようとしていますが、次のコードをでdouble x1[dim];
にスチールします。同じコードがg ++でコンパイルされていますが、VSにはありません
double fitness(const double x[], const int &dim) {
double sum = 0.0;
double x1[dim];
...
return sum;
}
g++ 4.8
でエラーなしで同じコードが実行されます。だから私はVisual Studio 2015の下で同じことをすることができます。
私の問題はコンパイラやコードの実装ですか?
std :: vectorまたはstd :: valarrayを使用してください – user3528438
私はstd :: vectorやstd :: arrayのようなコンテナを避けようとしています。 – TomazStoiljkovic
次に、動的配列( 'new'と' delete')を使うことができますが、非常にコンパイルされた理由がない限り、std :: vectorを優先します。あなたのコードが動作しない理由は、可変長配列(別名VLA)がc99の機能であり、デフォルトで拡張機能としてGCCによってサポートされています(afaik GCCのデフォルトのC++方言オプションは-std = gnu ++ 98 all gcc拡張を有効にします)。 MSVCは伝統的にC99をサポートしていないため、この言語機能はMSVCで利用できない可能性があります。 – user3528438