У меня есть следующий простой источник
#include <iostream>
int main() {
int nv;
nv = 3;
int arr[nv] = { 0, 2, 5 };
return 0;
}
При компиляции с GCC в системе 1 я получаю
error: variable-sized object ‘arr’ may not be initialized.
При компиляции с GCC в системе 2 я не получаю ошибок.
Флаги компиляции одинаковы в обоих случаях, см. Ниже.
В чем причина этого и как я могу заставить мой код компилироваться в системе 1?
Я подозревал, что это связано с версией gcc, но я не нашел информации, подтверждающей это подозрение.
В системе 1:
$ g++ --version
g++ (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
...
$ make
g++ -MMD -g -g3 -Wall -Wunused -Wuninitialized -Wextra -fmessage-length=0 -std=gnu++11 -c -o obj/arrays_test.o src/arrays_test.cc
...
В системе 2:
$ g++ --version
g++ (Ubuntu 5.5.0-12ubuntu1~16.04) 5.5.0 20171010
...
$ make
g++ -MMD -g -g3 -Wall -Wunused -Wuninitialized -Wextra -fmessage-length=0 -std=gnu++11 -c -o obj/arrays_test.o src/arrays_test.cc
...