VC++ 2012 でいくつかの AudioDSP を実行しており、バッファのメモリ割り当てに問題があります
int size = input.getSize();
float buf[size];
コンパイル時に「エラー C2057: 定数式が必要です」というエラーが表示されます。コードは C++ ではなく C99 で動作するようです。これを回避する方法はありますか?
VC++ 2012 でいくつかの AudioDSP を実行しており、バッファのメモリ割り当てに問題があります
int size = input.getSize();
float buf[size];
コンパイル時に「エラー C2057: 定数式が必要です」というエラーが表示されます。コードは C++ ではなく C99 で動作するようです。これを回避する方法はありますか?
これは、C99 が可変長配列をサポートしているのに対し、C++ はサポートしていないためです (少なくとも、C++98 や C++11 はサポートしていません)。以下にいくつかの回避策を示します。
std::vector
または任意の適切なコンテナを使用するようにコードをリファクタリングします。可能であれば、これが推奨される方法です。
拡張機能として VLA をサポートするコンパイラを見つけます (たとえば、オプション-std=c++gnu98
またはを使用した GCC -std=gnu++11
)。
とにかく、リファクタリングするコードがそれほど多くない場合は、VLA の代わりに標準コンテナーを使用するようにコードを変更してみてください。