]]> ]]>

C11

Диалект языка программирования C

C11 — стандарт языка 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

]]>

Работа программистам