The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Релиз GCC 4.2

16.05.2007 00:12

Вышел релиз новой ветки набора компиляторов GCC 4.2.

Особенности новой версии:

  • Удалена опция -fshared-data;
  • В компиляторы C, C++ и Fortran добавлена поддержка техники параллельного программирования OpenMP.
  • Новые опции -fstrict-overflow и -Wstrict-overflow для управления поведением при переполнении переменной;
  • Новая опция -fno-toplevel-reorder отключающая перегруппировку порядка следования top-level функций, переменных и asm вставок.
  • В преддверии появления в GCC 4.3 поддержки описанного в стандарте C99 метода обработки inline функций, GCC 4.2 выдает предупреждение при использовании нестатичных inline функций.
  • Другие привязанные к определенным архитектурам или языкам изменения.

    1. Главная ссылка к новости (http://gcc.gnu.org/gcc-4.2/...)
    2. Projects planned for GCC 4.2
    3. GCC 4.2 Release Series: Changes, New Features, and Fixes
    Лицензия: CC BY 3.0
    Короткая ссылка: https://opennet.ru/10782-gcc
    Ключевые слова: gcc
    При перепечатке указание ссылки на opennet.ru обязательно


    Обсуждение (13) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, celz (?), 19:17, 16/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Ну наконец то в релизе нативно OpenMP, с ноября ждал!
     
  • 1.2, Аноним (-), 00:13, 17/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Народ!
    Объясите, почему, если i = 5, то
    ++i + ++i
    даёт 14??
    Ведь как я понимаю (пошагово)
    1)++i даёт 6
    2)затем 6 складывается с ++i,
    а т.к. ++i увеличит значение i до выполнения какой-либо другой операции, то получается, что 6 складывается с (6 + 1).
    Должно тогда получаться 13??
    А все говорят: 14.
    Объясните С-новичку :(
     
     
  • 2.3, Acron (?), 01:05, 17/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >>а т.к. ++i увеличит значение i до выполнения какой-либо другой операции, то получается, что 6 складывается с (6 + 1)
    не 6, а i складывается с (6+1).
    А 6+1 и есть i. Следовательно, в итоге имеем: 7+7=14
    i первая и i вторая это одна и та же ячейка памяти.
     
  • 2.4, Xan (??), 01:38, 17/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Что, опять эта задачка?
    Причина в том, что компилятор использует оптимизацию с помощью регистров.
    volatile int i = 5;
    решит эту проблему и результат будет по стандарту - 13.
     
     
  • 3.6, Anton (??), 03:18, 17/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Не надо людям мозги пудрить. Не разбираешься - молчи лучше... "Оптимизация с помощью регистров" ровно как и "volatile" здесь абсолютно не к месту. А к месту здесь стандарт C++, который утверждает следующее:

    Chapter 5 Expressions
    ...
    4 Except where noted, the order of evaluation of operands of individual operators and subexpressions of individual expressions, and the order in which side effects take place, is unspecified.58) Between the previous and next sequence point a scalar object shall have its stored value modified at most once by the evaluation of an expression. Furthermore, the prior value shall be accessed only to determine the value to be stored. The requirements of this paragraph shall be met for each allowable ordering of the subexpressions of a full expression; otherwise the behavior is undefined. [ Example:

    i = v[i ++]; / / the behavior is undefined
    i = 7 , i++ , i ++; / / i becomes 9
    i = ++i + 1; / / the behavior is undefined
    i = i + 1; / / the value of i is incremented

    —end example ]

    Так что поведение в данном случае не определено, и никаких гарантий по поводу результата быть не может.

     
  • 2.7, Ф (?), 10:55, 17/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    в с++ временное значение в выражении возвращает по ссылке, а не по значению.
    а по стандарту - это не определенное поведение
     
  • 2.8, Dvorkin (??), 23:19, 17/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    тоже любитель анального юмора?
    http://community.livejournal.com/ru_programming/750836.html
     
  • 2.11, blob (??), 12:38, 20/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Почему? Вы работаете с ОДНОЙ ячейкой памяти. правильный ответ == 14. Неужели Вы этого не видите :)
     

  • 1.5, horsh (??), 03:01, 17/05/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/

    Вот кусок стандарта. На присваивании сиквенс поинт отсутствует, равно как
    и на +, ++. В данных случаях только на точке с запятой.


    6.5 Expressions

    ...

    2  Between the previous and next sequence point an object shall have its stored value modified AT MOST ONCE by the evaluation of an expression. Furthermore, the prior value shall be read only to determine the value to be stored.71)

    ...

    71) This paragraph renders undefined statement expressions such as

    i = ++i + 1;
    a[i++] = i;

    while allowing

    i = i + 1;
    a[i] = i;

     
     
  • 2.9, Xumorist (?), 00:06, 19/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    Да уж - в постах о выходе компилятора обсуждают прикол с bash.org.ru :-D
    Пацтулом :)
     
     
  • 3.10, Ламер (??), 13:13, 19/05/2007 [^] [^^] [^^^] [ответить]  
  • +/
    >Да уж - в постах о выходе компилятора обсуждают прикол с bash.org.ru
    >:-D
    >Пацтулом :)

    Кстати, этот прикол не на одном форуме программеров сейчас обсуждается. :)


     

  • 1.12, Аноним (-), 18:20, 18/06/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Для того, чтобы понять, надо стать компилятором.
    1) Пробелы убрали
    2) Слева направо делаем разбор выражения
       а) ++i это префисный инкремент                           ++i  == 6
       б) затем два плисика подряд это постфиксный инкркмент    i++  == 7
       в) затем еще плюс это, наконец, сложение                 i+i  7 + 7 == 14
     
  • 1.13, Аноним (-), 17:37, 01/07/2007 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    13 получится если поставить скобки :

    (++i)+(++i) == 13

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру