在VC ++ 2012中做一些AudioDSP,并且在为缓冲区分配内存时遇到问题
int size = input.getSize();
float buf[size];
在编译时我得到错误“错误C2057:期望的常量表达式”看起来代码在C99中工作而不是C ++。知道怎么解决这个问题吗?
答案 0 :(得分:2)
这是因为C99支持可变长度数组,而C ++不支持(至少不支持C ++ 98,也不支持C ++ 11)。以下是一些解决方法:
重构您的代码以使用std::vector
或任何合适的容器。如果可能,这将是首选方法。
查找支持VLA作为扩展名的编译器(例如,带有-std=c++gnu98
或-std=gnu++11
选项的GCC。
无论如何,如果您没有那么多代码来重构,请尝试更改您的代码以使用标准容器而不是VLA。