2013-06-12 2 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를 지원하는 컴파일러를 찾습니다 (예 : -std=c++gnu98 또는 -std=gnu++11 옵션이있는 GCC).

어쨌든 리펙토링 할 코드가 많지 않은 경우 VLA 대신 표준 컨테이너를 사용하도록 코드를 변경하십시오.