2
在VC++ 2012做一些AudioDSP時遇到了緩衝區錯誤C2057:預期常量表達式
int size = input.getSize();
float buf[size];
在編譯我的錯誤分配內存的問題「錯誤C2057:預計常量表達式」貌似碼在C99中工作,而不是C++。任何想法如何解決這個問題?
在VC++ 2012做一些AudioDSP時遇到了緩衝區錯誤C2057:預期常量表達式
int size = input.getSize();
float buf[size];
在編譯我的錯誤分配內存的問題「錯誤C2057:預計常量表達式」貌似碼在C99中工作,而不是C++。任何想法如何解決這個問題?
這是因爲C99支持可變長度數組,而C++沒有(至少不是C++ 98和C++ 11)。下面是一些解決方法:
重構代碼使用std::vector
或任何合適的容器。如果可能的話,這將是首選的方法。
查找支持VLA作爲擴展的編譯器(例如,GCC的選項爲-std=c++gnu98
或-std=gnu++11
)。
無論如何,如果你沒有那麼多的代碼重構,請嘗試更改代碼使用標準的容器,而不是一個VLA的。