Я извлек и протестировал следующие фрагменты кода, которые не работают во время компиляции в Тельце Дрездена (кластер) с:
Версия: g ++ 4.8.5 20150623 (Red Hat 4.8.5-16))
g++ -Wall -g -c -O3 -finline-functions file_const.cpp main.cpp
g++ file_const.o main.o -o final
, но компилируется с cygwin 2.11.1 (0.329 / 5/3) с:
Версия: g ++ (GCC) 7.3.0
Код:
main.cpp:
#include "header.h"
int main()
{
double test_array[const_array] = {0.0};
std::cout << test_array[0];
return 0;
}
header.h:
#include <iostream>
extern const unsigned int const_array;
file_const.cpp:
extern const unsigned int const_array = 4;
Сообщение об ошибке в кластере Taurus:
main.cpp:5:39: error: variable-sized object 'test_array' may not be initialized
double test_array[const_array] = {0.0};
Я не могу использовать ту же версию g ++ в cygwin просто потому, что у меня нет прав администратора (рабочая система).Я прочитал сообщения о внешнем определении и объявлении и знаю, как динамически создавать массивы.Что я не хочу делать.
Что я делаю не так?И как это обойти?