错误C2057:预期的常量表达式

时间:2013-06-12 09:52:50

标签: c++ c signal-processing c99

在VC ++ 2012中做一些AudioDSP,并且在为缓冲区分配内存时遇到问题

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

在编译时我得到错误“错误C2057:期望的常量表达式”看起来代码在C99中工作而不是C ++。知道怎么解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

这是因为C99支持可变长度数组,而C ++不支持(至少不支持C ++ 98,也不支持C ++ 11)。以下是一些解决方法:

  • 重构您的代码以使用std::vector或任何合适的容器。如果可能,这将是首选方法。

  • 查找支持VLA作为扩展名的编译器(例如,带有-std=c++gnu98-std=gnu++11选项的GCC。

无论如何,如果您没有那么多代码来重构,请尝试更改您的代码以使用标准容器而不是VLA。