2

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

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

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

4

1 回答 1

2

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

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

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

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

于 2013-06-12T12:43:10.813 回答