218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
|
||||||
1 | ||||||
GCC, статичиские масивы, С++19.08.2011, 12:49. Показов 2891. Ответов 27
Метки нет (Все метки)
Всем привет.
Такой вопрос: как сделать, что бы gcc не компилил такой код:
8.3.4 Arrays
0
|
19.08.2011, 12:49 | |
Ответы с готовыми решениями:
27
GCC Сборка 32 разрядной версии GCC 64 разрядным GCC Масивы масивы масивы |
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 |
хз
вот... Добавлено через 48 секунд он как раз-то и не должен, вот я и спрашиваю, почему он его компилирует.
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 |
А в чём по вашему заключается ошибка? Массив динамический, определять размерность можно в пределах функции когда хочешь.
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 |
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
|
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 |
Значит gcc не по тому стандарту делали. Вобщем - массив внутри функции динамический, объявлять можно когда хочешь и с чем хочешь. Деталей не знаю, у меня компилируется тоже без сообщений.
0
|
Higher
|
|
19.08.2011, 13:05 | 14 |
http://gcc.gnu.org/c99status.html
http://msdn.microsoft.com/ru-r... 574zs.aspx
0
|
218 / 20 / 5
Регистрация: 05.08.2010
Сообщений: 229
|
|
19.08.2011, 13:07 [ТС] | 15 |
Я в адеквате и понятно никогда такое не пишу, я задал вопрос: "почему ?", если есть ответ - спасибо, нет - воздержитесь(плз).
Добавлено через 43 секунды ..... Добавлено через 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 |
0
|
19.08.2011, 13:15 | |
19.08.2011, 13:15 | |
Помогаю со студенческими работами здесь
20
С++ Масивы Масивы С++ Масивы Масивы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |