2

VC++ 2012 でいくつかの AudioDSP を実行しており、バッファのメモリ割り当てに問題があります

int size = input.getSize();
float buf[size];

コンパイル時に「エラー C2057: 定数式が必要です」というエラーが表示されます。コードは C++ ではなく C99 で動作するようです。これを回避する方法はありますか?

4

1 に答える 1

2

これは、C99 が可変長配列をサポートしているのに対し、C++ はサポートしていないためです (少なくとも、C++98 や C++11 はサポートしていません)。以下にいくつかの回避策を示します。

  • std::vectorまたは任意の適切なコンテナを使用するようにコードをリファクタリングします。可能であれば、これが推奨される方法です。

  • 拡張機能として VLA をサポートするコンパイラを見つけます (たとえば、オプション-std=c++gnu98またはを使用した GCC -std=gnu++11)。

とにかく、リファクタリングするコードがそれほど多くない場合は、VLA の代わりに標準コンテナーを使用するようにコードを変更してみてください。

于 2013-06-12T12:43:10.813 に答える