crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> причуды компиляторов.
molchanoviv
  опции профиля:
сообщение 20.2.2009, 11:15
Сообщение #1


Старейший участник
****

Группа: Сомодератор
Сообщений: 597
Регистрация: 18.7.2008
Из: Саратов
Пользователь №: 238

Спасибо сказали: 41 раз(а)




Репутация:   5  


Сегодня на работе во время ожидания окончания очередной антивирусной проверки на просторах интернета наткнулся на такую штуку

#include <iostream>
int main()
{
int i = 5;

i = i++ + 1;

std::cout<< i << std::endl;

return 0;
}

При компиляции этого кода gcc выдает undefined behaviour и в кач-ве результата i=7, а интел хавает все без варнингов и результат i=6
Выводы делаем сами и желательно отписываем сюда.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
void*
  опции профиля:
сообщение 26.2.2009, 21:06
Сообщение #2


Программист-самоучка
***

Группа: Участник
Сообщений: 429
Регистрация: 4.6.2008
Пользователь №: 193

Спасибо сказали: 28 раз(а)




Репутация:   3  


Цитата(Tonal @ 26.2.2009, 17:08) *
В стандарте динамических массивов нет - это расширение gcc.

Ясно, спасибо буду теперь знать. Просто очень давно сталкивался с этим, вот и подзабыл детали этой проблемы.

П.С. Кстати а может кто-нибудь привести реальные примеры непридерживания стандартов компилятором от Borland (интересно просто)?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Tonal
  опции профиля:
сообщение 27.2.2009, 8:45
Сообщение #3


Активный участник
***

Группа: Участник
Сообщений: 452
Регистрация: 6.12.2007
Из: Новосибирск
Пользователь №: 34

Спасибо сказали: 69 раз(а)




Репутация:   17  


Цитата(void* @ 27.2.2009, 0:06) *
П.С. Кстати а может кто-нибудь привести реальные примеры непридерживания стандартов компилятором от Borland (интересно просто)?

У меня была большая подборка багов для багланда.
Основная масса в поддержке шаблонов и исключений. Не зря половина boost-а багландом не компилится.
Насколько она актуальна сейчас - не в курсе - слез с него уже довольно давно.
Мой любимый:
#include <iostream>

using std::cout;
using std::endl;

struct test_t {
  int val;
  test_t(int val) : val(val) {
    cout<<"test_t::test_t val = "<<val<<endl;
  }
  ~test_t() {
    cout<<"~test_t::test_t val = "<<val<<endl;
  }
};

int main() {
  size_t arg_size = sizeof test_t(666);
  cout<<"sizeof test_t = "<<arg_size<<endl;
  return 0;
}

На bcc 5.6.4 (C++Builder 6 sp4) и раньше вызывается деструктор несозданного объекта...
Причём эта кочующая бага. Я на неё нарывался со статическими объектами и с тернарным оператором.
Как оно сейчас - просто не в курсе.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- molchanoviv   причуды компиляторов.   20.2.2009, 11:15
- - kuler   кто то не соответствует стандарту   20.2.2009, 11:18
- - Tonal   Оба соответствуют. Это действительно undefined beh...   20.2.2009, 11:41
- - void*   Я как-то заметил еще одну интересную вещь. Не помн...   26.2.2009, 15:38
|- - AD   Цитата(void* @ 26.2.2009, 15:38) Я как-то...   26.2.2009, 16:08
- - void*   Цитата(AD @ 26.2.2009, 15:08) Лучше делат...   26.2.2009, 16:32
- - Tonal   В стандарте динамических массивов нет - это расшир...   26.2.2009, 18:08
- - Novak   Цитата(Tonal @ 26.2.2009, 18:08) В станда...   26.2.2009, 18:18
- - Litkevich Yuriy   Цитата(Tonal @ 26.2.2009, 21:08) это расш...   26.2.2009, 18:47
- - void*   Цитата(Tonal @ 26.2.2009, 17:08) В станда...   26.2.2009, 21:06
|- - Tonal   Цитата(void* @ 27.2.2009, 0:06) П.С. Кста...   27.2.2009, 8:45
- - Andrew Selivanov   Субъективное впечатление: Mingw (3.4.5) не особо л...   27.2.2009, 10:42
- - molchanoviv   Не в курсе как тройка, а вот 4-ка отлично все пере...   27.2.2009, 11:52
- - Kagami   Цитата(molchanoviv @ 27.2.2009, 11:52) Не...   27.2.2009, 22:17
- - molchanoviv   Я в основном пользую линукс. В винду загружаюсь оч...   27.2.2009, 22:27


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


6 чел. читают эту тему (гостей: 6, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 15.1.2025, 14:18