Ошибка C2057: ожидаемое постоянное выражение
Делаю некоторые AudioDSP в VC++ 2012 и у меня проблемы с выделением памяти для буфера
int size = input.getSize();
float buf[size];
При компиляции я получаю ошибку "ошибка C2057: ожидаемое константное выражение" Похоже, код работает на C99, а не на C++. Есть идеи как обойти это?
1 ответ
Это связано с тем, что C99 поддерживает массивы переменной длины, а C++ - нет (по крайней мере, не C++98 и не C++11). Вот некоторые обходные пути:
Рефакторинг вашего кода для использования
std::vector
или любой подходящий контейнер. Если возможно, это будет предпочтительным методом.Найдите компилятор, который поддерживает VLA как расширение (например, GCC с опцией
-std=c++gnu98
или же-std=gnu++11
).
В любом случае, если у вас не так много кода для рефакторинга, пожалуйста, попробуйте изменить свой код, чтобы использовать стандартный контейнер вместо VLA.