Выражение должно иметь константное значение? Си

программирование С++ с99 с90

Обязательно ли при инициализации статического массива индекс должен быть константным значением?
К примеру создаем массив из N элементов.


int x;
scanf("%d", &x);
int array[x];


Pelles C данный код пропускает, а MVS2010 выдает ошибку, что "х" не является константным значением. Всегда считал, что инициализировать не динамический массив, при работе программы, с помощью не константной переменной нельзя. Или я что то путаю? Можно ли прокомментировать данную ситуацию, а также хотел бы ссылку, где это описано в стандарте. Спасибо.
Ответы:
смотря какой стандарт поддерживает компилятор
http://ru.wikipedia.org/wiki/C99
>MVS2010 выдает ошибку, что "х" не является константным значением
Может у тебя там язык C++ стоит? измени на C, в настройках проекта, т.к. C++ не поддерживает VLA, который, как уже писали, введен в текущий стандарт C99.
MVS2010 поддерживает только C89
стандартом C89 такая запись запрещена


13 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.