#c
Вот такой код в 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 а в стандартах С или компиляторах ?
Ответы
Ответ 1
Где именно вы объявляете ваш массив? Если ваш массив объявлен локально, то вы пытаетесь использовать Variable Length Arrays (VLA) - свойство языка С начиная с версии С99. Компилятор MSVC не поддерживает VLA, даже несмотря на то, что в современном MSVC поддержка С99 реализована [почти] полностью. Стандарт С11 сделал VLA опциональным свойством языка, так что возможно мы никогда и не увидим их поддержки в MSVC. В нелокальных же областях VLA объявляться не может.Ответ 2
Нету в стандарте C массивов с динамическим выделением. Это была одноразовая слабость, реверанс в сторону фортранщиков, которую поддержали в GCC, который и применятся в CBlocks (дрянная кстати IDE, имеет самый дубовый конфигуратор проектов в этой части вселенной). Так вот, хотите динамику - либо malloc/realloc/free, либо C++ и STL.
Комментариев нет:
Отправить комментарий