![]() |
|
|
![]()
|
|
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
Извиняюсь за название темы не знаю как точно назвать !
Вобшем занимался переносом одного проекта из Linux в Windows. А именно хотел прогнать код через компилятор mvs08. И вот тут столкнулся с такой штукой .
Этот код нормально собирается в gcc а вот в msv08 выдаёт ошибку. Как я помню нельзя задавать размер массива переменной и значит msv08 прав. Но почему же тогда gcc собирает нормально ? Или он находя такое определение автоматически переделывает его динамический массив и сам следит за его удалением после выхода из области видимости ? |
|||
|
||||
| niXman |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 4.7.2009 Репутация: нет Всего: 0 |
Remiznik, MSVC по ходу, не поддерживает С99(http://ru.wikipedia.org/wiki/C99)
Добавлено через 1 минуту и 33 секунды Потому что поддерживает.
Вот тут не знаю. Был бы рад если бы кто-то более просвещенный внес ясность. --------------------
if ( !c++ ) { *power--; this->wussiness += 10;} |
|||
|
||||
| Remiznik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 379 Регистрация: 30.4.2005 Репутация: нет Всего: 1 |
Это не утверждение это всеголиш моя догадка . Просто я бы удивлён когда mvs08 выдал ошибку . Пришлось импользовать динамические массивы. |
|||
|
||||
| niXman |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 211 Регистрация: 4.7.2009 Репутация: нет Всего: 0 |
Я уже не удивляюсь. Микрософтовский компилятор вообще не особо следует стандартам С/С++. Если для изучения С++ тебе важно соответствие стандарту, то лучше использовать Comeau или Mingw --------------------
if ( !c++ ) { *power--; this->wussiness += 10;} |
|||
|
||||
| 586 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: нет Всего: 146 |
Нет. Память выделяется в стеке, как для обычных локальных переменных -- http://codepad.org/ddBj8wj5
Первые два адреса находятся рядом, т.е., переменная a и массив b находятся в одной области памяти - в стеке. Это сообщение отредактировал(а) 586 - 28.10.2009, 01:17 |
||||||
|
|||||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: нет Всего: 10 |
Это одно из многочисленных расширений gcc, так что ничего удивительного. Я думаю ты бы не сильно удивился, воспользовшись майрософтскими расширениями и столкнувшись с проблемами при портировании под gcc...
|
|||
|
||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Разница в том, что микрософтовские расширения не стандартны. А мы говорим про стандарт С99. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: нет Всего: 10 |
Ну это если о С99 говорить, для С89 или С++ это работает в виде расширения. Ну и даже для С99, реализация не до конца соответствует стандарту (по крайней мере в доках gcc так написано
|
|||
|
||||
| andrew_121 |
|
||||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: нет Всего: 33 |
Реализация С99 ? Или реализация конкретно этого случая
? Это сообщение отредактировал(а) andrew_121 - 29.10.2009, 10:06 -------------------- Удалил аккаунт. Прощайте! |
||||
|
|||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: нет Всего: 10 |
да, реализация variable-length arrays.
|
|||
|
||||
![]()
|
| 1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | GNU toolchain | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |