ошибка C2057: ожидаемое постоянное выражение

Делаю некоторые AudioDSP в VC ++ 2012 и у меня проблемы с выделением памяти для буфера

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

При компиляции я получаю ошибку «ошибка C2057: ожидаемое константное выражение» Похоже, код работает на C99, а не на C ++. Есть идеи как обойти это?

2

Решение

Это связано с тем, что C99 поддерживает массивы переменной длины, а C ++ — нет (по крайней мере, не C ++ 98 и не C ++ 11). Вот некоторые обходные пути:

  • Рефакторинг вашего кода для использования std::vector или любой подходящий контейнер. Если возможно, это будет предпочтительным методом.

  • Найдите компилятор, который поддерживает VLA как расширение (например, GCC с опцией -std=c++gnu98 или же -std=gnu++11).

В любом случае, если у вас не так много кода для рефакторинга, попробуйте изменить свой код, чтобы использовать стандартный контейнер вместо VLA.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]