2013-06-12 186 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的。