Страницы

Поиск по вопросам

четверг, 15 ноября 2018 г.

Размер массива структур

Вот такой код в CodeBlock работает без ошибок
typedef struct exmpl{ int index; char name[50]; int count; } result;
int size; scanf("%d", &size);
result data[size];
Но в Visual Studio выдает ошибки
error C2057: expected constant expression error C2466: cannot allocate an array of constant size 0 error C2133: 'data' : unknown size
Как я понимаю проблема не в IDE а в стандартах С или компиляторах ?


Ответ

Где именно вы объявляете ваш массив?
Если ваш массив объявлен локально, то вы пытаетесь использовать Variable Length Arrays (VLA) - свойство языка С начиная с версии С99. Компилятор MSVC не поддерживает VLA, даже несмотря на то, что в современном MSVC поддержка С99 реализована [почти] полностью. Стандарт С11 сделал VLA опциональным свойством языка, так что возможно мы никогда и не увидим их поддержки в MSVC.
В нелокальных же областях VLA объявляться не может.

Комментариев нет:

Отправить комментарий