218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
1

GCC, статичиские масивы, С++

19.08.2011, 12:49. Показов 2891. Ответов 27
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Такой вопрос: как сделать, что бы gcc не компилил такой код:
C++
1
2
3
int n;
std::cin >> n;
int a[n];
?
8.3.4 Arrays
In a declaration T D where D has the form
D1 [constant-expression]
Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.08.2011, 12:49
Ответы с готовыми решениями:

GCC Сборка 32 разрядной версии GCC 64 разрядным GCC
Доброго времени суток. Возникла необходимость под 32х разрядный Linux, собрать 32 разрядный GCC. Но...

Масивы
Задано масив. Написать: а) все отрицательные элементы; б) все элементы, что не превышают числа...

масивы
переписатьт отрицательные элементы масивы а(n) в В(к) и определить его размер.результат распечатать...

масивы
дана прямоугольная матрица F подсчитать средние арифметическое отрицательных элементов в матрице....

27
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
19.08.2011, 12:50 2
bambino, а почему он должен этот код компилировать, и какой компилятор компилирует этот код?
0
218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
19.08.2011, 12:53  [ТС] 3
Цитата Сообщение от aram_gyumri Посмотреть сообщение
а почему он должен этот код компилировать
хз
Цитата Сообщение от aram_gyumri Посмотреть сообщение
и какой компилятор компилирует этот код?
Цитата Сообщение от bambino Посмотреть сообщение
что бы gcc
вот...

Добавлено через 48 секунд
Цитата Сообщение от aram_gyumri Посмотреть сообщение
а почему он должен этот код компилировать,
он как раз-то и не должен, вот я и спрашиваю, почему он его компилирует.
0
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
19.08.2011, 12:55 4
извини нормально не прочел, он что этот код компилит?О_о
0
640KB мне хватило на всё.
119 / 50 / 3
Регистрация: 07.06.2009
Сообщений: 442
19.08.2011, 12:56 5
Цитата Сообщение от bambino Посмотреть сообщение
он как раз-то и не должен
А в чём по вашему заключается ошибка? Массив динамический, определять размерность можно в пределах функции когда хочешь.
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
19.08.2011, 12:56 6
aram_gyumri, в gcc есть подобная фишка, но это всё равно не динамическое выделения (да-да, я КО), а, насколько мне известно, опасное выделение на стеке. Опасное потому, что стека при очередном вызове может не хватить и программа упадёт.
1
218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
19.08.2011, 12:59  [ТС] 7
Цитата Сообщение от skvor Посмотреть сообщение
А в чём по вашему заключается ошибка?
Не соответствие стандарту, я же привел цитату.
0
404 / 360 / 36
Регистрация: 11.10.2010
Сообщений: 1,907
19.08.2011, 13:00 8
нет слов. Даже не знал что так можно. присоединяюсь к вопросу
0
218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
19.08.2011, 13:01  [ТС] 9
Может есть какой-то ключ, с которым компилятор хоть бы warning кидал ?
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,112
Записей в блоге: 2
19.08.2011, 13:01 10
Я знаю, что в С99 можно так делать, поэтому вопрос - GCC так делает потому, что в С99 это есть или это его собственная фишка?

Не по теме:

я вообще не знал, что GCC такое позволяет

0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.08.2011, 13:01 11
А просто не писать подобные конструкции не вариант? В чем проблема-то?
1
218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
19.08.2011, 13:03  [ТС] 12
Kastaneda, Я компилирую без флага, -std=c99, так что это как бы здесь ни пречем.
0
640KB мне хватило на всё.
119 / 50 / 3
Регистрация: 07.06.2009
Сообщений: 442
19.08.2011, 13:04 13
Цитата Сообщение от bambino Посмотреть сообщение
Не соответствие стандарту, я же привел цитату.
Значит gcc не по тому стандарту делали. Вобщем - массив внутри функции динамический, объявлять можно когда хочешь и с чем хочешь. Деталей не знаю, у меня компилируется тоже без сообщений.
0
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
19.08.2011, 13:05 14
Цитата Сообщение от Kastaneda Посмотреть сообщение
GCC так делает потому, что в С99 это есть или это его собственная фишка?
http://gcc.gnu.org/c99status.html
variable-length arrays - Done
То, что это именно так называется, подтверждает MSDN
http://msdn.microsoft.com/ru-r... 574zs.aspx
0
218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
19.08.2011, 13:07  [ТС] 15
Цитата Сообщение от diagon Посмотреть сообщение
А просто не писать подобные конструкции не вариант? В чем проблема-то?
Я в адеквате и понятно никогда такое не пишу, я задал вопрос: "почему ?", если есть ответ - спасибо, нет - воздержитесь(плз).

Добавлено через 43 секунды
Цитата Сообщение от skvor Посмотреть сообщение
Значит gcc не по тому стандарту делали.
Цитата Сообщение от bambino Посмотреть сообщение
, если есть ответ - спасибо, нет - воздержитесь(плз)
.....

Добавлено через 1 минуту
С99 тут никаким боком не касаеться(имхо), так-как подмножеством С++ являеться С89.
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
19.08.2011, 13:09 16
для предупреждения -Wvla или -pedantic (а лучше -Wall -pedantic)
2
Эксперт С++
1069 / 848 / 60
Регистрация: 30.04.2011
Сообщений: 1,659
19.08.2011, 13:12 17
1. Не соответствует стандарту С++ 1998 года с поправками 2003 года. Но может соответствовать стандарту 2011 года.
2. Обычно в компиляторах есть ключ типа: запретить все расширения стандарта.
Например в Code::Blocks есть такой пункт в опциях билдинга: -std = c++98
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
19.08.2011, 13:13 18
ValeryLaptev, я проверял. -std=с++98 не запрещает VLA. Я и сам удивился.
1
2835 / 1644 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
19.08.2011, 13:13 19
Лучший ответ Сообщение было отмечено как решение

Решение

Компилирует, потому что это расширение gcc. Есть ещё много всяких.
http://gcc.gnu.org/onlinedocs/... Extensions
http://gcc.gnu.org/onlinedocs/... Extensions
Опции: -pedantic - будет давать warning'и, -pedantic-errors - ошибки.
4
218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
19.08.2011, 13:15  [ТС] 20
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
Но может соответствовать стандарту 2011 года.
Пункт в драфте, где такое сказано ?
0
19.08.2011, 13:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.08.2011, 13:15
Помогаю со студенческими работами здесь

С++ Масивы
Помогите написать 3 программы по этим заданиям в С++! В одномерном массиве, который состоит из n...

Масивы
Помогите пожалуйста...Голову уже как часа 2 ломаю((( Программа должна осуществлять: 1)Ввод с...

С++ Масивы
Задание такое: В одномерном массиве, который состоит из n действительных элементов, вычислить:...

Масивы
Нужны любые ссылки или учебники по работе с массивами.Хто знает дайте пожалуйста)))


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru