C11
Диалект языка программирования CC11 — стандарт языка C, также известный как C1X. Черновики стандарта публиковались в апреле и октябре 2011 года. Официально он принят 8 декабря 2011 года под номером ISO/IEC 9899:2011.
Некоторые возможности стандарта поддерживаются GCC 4.6. Этот стандарт позволяет реализациям не поддерживать некоторые части, а программам — проверять наличие поддержки проверкой соответствующих макросов.
Изменения по сравнению с C99:
-
поддержка многопоточности (
<threads.h>
и<stdatomic.h>
). -
выравнивание данных (размещение данных в памяти определенным образом для ускорения доступа): спецификатор
_Alignas
, операторalignof
, функцияaligned_alloc
и заголовочный файл<stdalign.h>
. -
спецификатор функции
_Noreturn
(указывает компилятору на то, что функция никогда не завершится черезreturn
, что позволяет оптимизировать код). -
типозависимые выражения (type-generic expressions), использующие
_Generic
(например, макрос, который заменяется разными выражениями в зависимости от типа параметра). - улучшенная поддержка Unicode.
-
замена функции
gets
, которую уже не рекомендует использовать C99, на безопаснуюgets_s
. - интерфейсы для проверки границ массива.
- возможности анализирования.
- макросы для запроса характеристик типов с плавающей точкой, относящихся к количеству десятичных знаков, которые могут храниться без потери точности, и денормализованных чисел.
- анонимные структуры (полезны при вложенных объявлениях).
- статические утверждения (assertion), проверяющиеся на этапе компиляции.
-
эксклюзивный режим создания-и-открытия файлов для
fopen
("...x"
), использующийся для блокировки файлов. -
функция
quick_exit
, третий способ завершить выполнение программы, выполняющая хотя бы минимальную деинициализацию. - макрос для создания комплексных значений.
Комментарии
]]>blog comments powered by Disqus
]]>