Проблема в том, что язык C++
не поддерживает массивы переменной длины (VLA). Код, который вы извлекли из inte rnet, возможно / вероятно был написан как C
, то есть другой язык из C++
, а поддерживает поддержку VLA (так как Стандарт C99, IIR C).
Вы можете «исправить» свой код для работы с standard C++
, используя контейнер std::vector
вместо VLA. Обязательно включите заголовочный файл <vector>
:
#include <vector>
//.. .
// unsigned int column[s1len + 1]; // NOT standard C++
std::vector<unsigned int>column(s1len + 1);
Вы можете получить доступ к элементам вектора, используя его оператор []
, поэтому вам не нужны никакие другие изменения в вашем коде.
Примечание: некоторые C++
реализации делают поддерживают VLA (я думаю, что GNU g ++ поддерживает) - но стандарт не делает.