Russian Fedora

cообщество русскоязычных участников
международного проекта Fedora

Что нового в GCC 6?

Это архивная статья

С появлением GCC 6 в Fedora 24 у мэйнтейнеров и простых пользователей Fedora возник вопрос - а что там такого нового, [STRIKEOUT:что ничего не работает]? Нового много!
Если же вам скучно читать список изменений, и подсказку по сборке ПО с новым GCC, то наши коллеги уже пару недель объясняют более доходчиво. Например, статья от Mark J. Wielaard, статья от Jeff Law, и статья от Richard Henderson.
Мы отметим следующие новшества:
  • Переход на c++14 по умолчанию (предыдущие версии можно переключиться с помощью флагов компилятора).

  • Scalar Storage Order. Это способ указать byte-order при описании структуры, и при дальнейшем обращении с ней компилятор будет автоматически добавлять код для конвертации endianness. Порой может быть удобно, но специфично для конкретного компилятора. С битовыми полями, к сожалению, применять не получится.

  • Предупреждения о misleading identation в коде.

  • Предупреждения, когда объект сравнивается с собой же. Например, if (point.x < 0 || point.x < 0)... или while (res > res)... - тут, вероятно, опечатка, и теперь компилятор укажет на это. Тоже самое, если в If..Else..If блоках будут повторяющиеся условия, то компилятор укажет на них.

  • Компилятор теперь проверяет корректность операций побитового сдвига.

    По умолчанию предупреждает о сдвиговых операциях над отрицательными числами, и о слишком больших сдвигах (выходящих за пределы размера переменной, например, сдвиг на 30 байт 32-битного числа 10 потребует как минимум 35 битов). Можно включить и предупреждение о сдвигах за пределы знаковых переменных.

  • Дополнительная проверка на разыменование нулевого указателя.

  • Offloading.


Твой ход, LLVM!
Кстати, а вы уже ознакомились с рекомендациями для современных C-программистов?

Комментарии