Подтвердить что ты не робот

Что такое C17 и какие изменения были внесены в язык?

Поскольку я проверял новости о GCC 8, я видел, что они добавили поддержку версии языка C7 2017 (не С++ 17, действительно C17). Но я не могу найти информацию об этом в Интернете.

Является ли это новой версией ISO, такой как C11, или просто кодовым именем, используемым командой GCC для некоторых исправлений в их компиляторе?

4b9b3361

Ответ 1

В соответствии с GCC ссылка C17 на самом деле является исправлением ошибок стандарта C11 с интегрированными разрешениями DR.

C17, версия с исправлением ошибок стандарта C11 с разрешениями DR интегрированный, скоро перейдет к голосованию. Этот патч добавляет соответствующие options -std=c17, -std=gnu17 (новая версия по умолчанию, замена -std=gnu11 по умолчанию), -std=iso9899:2017. Как версия исправления ошибок стандарта, нет необходимости в flag_isoc17 или любых вариантах для предупреждения о совместимости; однако есть новый __STDC_VERSION__значение, поэтому новые языки cpplib CLK_GNUC17 и CLK_STDC17 добавляются к поддержку с использованием этого нового значения с новыми параметрами. (Если стандарт заканчивается в 2018 году и известен как C18, алиасы опций могут быть добавлены. Обратите внимание, однако, что -std=iso9899:199409 соответствует __STDC_VERSION__, а не дата публикации.)

(Существует несколько DR-решений, требующих реализации в GCC, но что не зависит от новых параметров.)

Итак, в C17 новых функций не будет.

Cppreference (История C) говорит:

Будущее развитие

C17 Следующая стандартная версия второго стандартного языка C будет включать все принятые отчеты о дефектах C11, но нет новых функций.