2013-06-12 230 views
2

在VC++ 2012做一些AudioDSP時遇到了緩衝區錯誤C2057:預期常量表達式

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

在編譯我的錯誤分配內存的問題「錯誤C2057:預計常量表達式」貌似碼在C99中工作,而不是C++。任何想法如何解決這個問題?

回答

2

這是因爲C99支持可變長度數組,而C++沒有(至少不是C++ 98和C++ 11)。下面是一些解決方法:

  • 重構代碼使用std::vector或任何合適的容器。如果可能的話,這將是首選的方法。

  • 查找支持VLA作爲擴展的編譯器(例如,GCC的選項爲-std=c++gnu98-std=gnu++11)。

無論如何,如果你沒有那麼多的代碼重構,請嘗試更改代碼使用標準的容器,而不是一個VLA的。