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