![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
molchanoviv |
![]()
Сообщение
#1
|
![]() Старейший участник ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 597 Регистрация: 18.7.2008 Из: Саратов Пользователь №: 238 Спасибо сказали: 41 раз(а) Репутация: ![]() ![]() ![]() |
Сегодня на работе во время ожидания окончания очередной антивирусной проверки на просторах интернета наткнулся на такую штуку
При компиляции этого кода gcc выдает undefined behaviour и в кач-ве результата i=7, а интел хавает все без варнингов и результат i=6 Выводы делаем сами и желательно отписываем сюда. |
|
|
![]() |
kuler |
![]()
Сообщение
#2
|
![]() Танцор диско ![]() ![]() ![]() Группа: Участник Сообщений: 441 Регистрация: 11.9.2008 Из: Москва Пользователь №: 289 Спасибо сказали: 6 раз(а) Репутация: ![]() ![]() ![]() |
кто то не соответствует стандарту
|
|
|
Tonal |
![]()
Сообщение
#3
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
Оба соответствуют.
Это действительно undefined behaviour. Результат может быть любой в зависимости от компилятора и его опций. |
|
|
void* |
![]()
Сообщение
#4
|
![]() Программист-самоучка ![]() ![]() ![]() Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
Я как-то заметил еще одну интересную вещь. Не помню точно, какая версия, но компилятор из VS(cl.exe) не поддерживает динамические массивы такого типа(а они есть в стандарте), в то время как g++ тут не имеет проблем:
|
|
|
AD |
![]()
Сообщение
#5
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2003 Регистрация: 4.2.2008 Из: S-Petersburg Пользователь №: 84 Спасибо сказали: 70 раз(а) Репутация: ![]() ![]() ![]() |
Я как-то заметил еще одну интересную вещь. Не помню точно, какая версия, но компилятор из VS(cl.exe) не поддерживает динамические массивы такого типа(а они есть в стандарте), в то время как g++ тут не имеет проблем:
Известный факт! ![]()
|
|
|
void* |
![]()
Сообщение
#6
|
![]() Программист-самоучка ![]() ![]() ![]() Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Tonal |
![]()
Сообщение
#7
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: ![]() ![]() ![]() |
В стандарте динамических массивов нет - это расширение gcc.
Так что тут и микрософт и багланд как раз более соответствуют стандарту. ![]() |
|
|
Novak |
![]()
Сообщение
#8
|
![]() Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 319 Регистрация: 15.3.2008 Из: Замкадыш Пользователь №: 121 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#9
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
void* |
![]()
Сообщение
#10
|
![]() Программист-самоучка ![]() ![]() ![]() Группа: Участник Сообщений: 429 Регистрация: 4.6.2008 Пользователь №: 193 Спасибо сказали: 28 раз(а) Репутация: ![]() ![]() ![]() |
В стандарте динамических массивов нет - это расширение gcc. Ясно, спасибо буду теперь знать. Просто очень давно сталкивался с этим, вот и подзабыл детали этой проблемы. П.С. Кстати а может кто-нибудь привести реальные примеры непридерживания стандартов компилятором от Borland (интересно просто)? |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 21.6.2025, 14:29 |