extern const claimes объект переменного размера не может быть инициализирован работами на cygwin (C ++, g ++ 4.8.5 20150623 (Red Hat 4.8.5-16)) - PullRequest
0 голосов
/ 25 января 2019

Я извлек и протестировал следующие фрагменты кода, которые не работают во время компиляции в Тельце Дрездена (кластер) с:

Версия: 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 просто потому, что у меня нет прав администратора (рабочая система).Я прочитал сообщения о внешнем определении и объявлении и знаю, как динамически создавать массивы.Что я не хочу делать.

Что я делаю не так?И как это обойти?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...