Использование массивов в качестве глобальных переменных - PullRequest
0 голосов
/ 12 апреля 2019

Я пытаюсь использовать массивы в качестве глобальных переменных.Кажется, что я не могу использовать ранее инициализированную переменную, такую ​​как l, для определения размеров массивов, и получаю следующую ошибку

error: граница массива не является целочисленной константой перед токеном ']'.

Однако это возможно, когда я пытаюсь использовать то же самое внутри функции main.

Может кто-нибудь объяснить, что здесь происходит?

//  If you move the following lines inside the main function then everything works fine

int l=3;
int a[l]={1,2,3};

int main()
{
    return 0;
}

Ответы [ 2 ]

1 голос
/ 12 апреля 2019

Массивам с глобальной областью действия или определенным как static нужны измерения, известные во время компиляции, и, как говорит Нейл, объявление l как const достигает этого.

Как расширение gcc / clang, массивыРаспределение внутри функции (то есть размещение в стеке) может иметь измерения, известные только во время выполнения.Однако это не является стандартным, и (например) MSVC не разрешает этого.

1 голос
/ 12 апреля 2019

Просто измените l на

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