#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.
Комментариев нет:
Отправить комментарий