Interested Article - ANSI C

ANSI C — стандарт языка C , опубликованный Американским национальным институтом стандартов ( ANSI ). Следование этому стандарту помогает создавать легко портируемые программы .

История

Первый стандарт языка C был опубликован американским институтом ANSI. Через некоторое время он был принят международной организацией по стандартизации ISO , продолжившей выпускать следующие версии стандарта, которые стали приниматься как стандарт и институтом ANSI. Несмотря на это стандарт до сих пор чаще называют ANSI C , а не ISO C .

C89

В 1983 году Американский национальный институт стандартов сформировал комитет X3J11 для создания спецификации стандарта C. В 1989 году, после длительного и напряжённого процесса, стандарт был завершён и утверждён как ANSI X3.159-1989 «Язык программирования C». Именно эту версию часто называют «ANSI C», или «C89» (чтобы отличить её от C99 ).

C90

В 1990 году, стандарт ANSI C (с небольшими изменениями) был принят Международной организацией по стандартизации (ISO) как ISO/IEC 9899:1990. Эту версию иногда называют C90. Однако, термины C89 и C90 относятся в сущности к одному языку.

C99

В марте 2000 года ANSI принял стандарт ISO/IEC 9899:1999 . Этот стандарт обычно называют C99. Основные нововведения:

  • Новые встроенные типы данных: long long , _Bool , _Complex и _Imaginary .
  • Новые возможности языка, включая массивы переменной длины, индексы статических массивов, compound-литералы, вариативные макросы , ключевое слово restrict .
  • Новые заголовочные файлы, включая stdint.h , tgmath.h , fenv.h , complex.h .
  • Возможности, совместимые с C++ , включая inline-функции, однострочные комментарии // , смешение декларации и кода, символы Юникода в идентификаторах.
  • Удалены опасные элементы C89, например, неявное объявление функций и неявное int .

Для C99 было выпущено три корректирующих документа:

  • ISO/IEC 9899:1999/Cor 1:2001(E)
  • ISO/IEC 9899:1999/Cor 2:2004(E)
  • ISO/IEC 9899:1999/Cor 3:2007(E)

C99 более не поддерживается комитетами ANSI/INCITS и ISO/IEC в пользу поддержки и разработки C11.

C11

C11 — новый стандарт языка, принятый в 2011 году как ISO/IEC 9899:2011. Основными новшествами является улучшенная поддержка Юникода , появление нового ключевого слова _Generic , кроссплатформенная поддержка многопоточности ( threads.h ) и поддержка атомарных типов в языке и библиотеке ( stdatomic.h ).

Для C11 был выпущен один корректирующий документ:

  • ISO/IEC 9899:2011/Cor 1:2012

С17

По состоянию на 2023 год, C17 является текущим стандартом языка C .

В основном C17 корректирует дефекты, обнаруженные в C11, не внося никаких нововведений .

Поддержка компиляторами

ANSI C на сегодняшний день поддерживается практически всеми распространёнными компиляторами языка C. Любая программа, написанная только с использованием стандарта и не допускающая специфических аппаратных допущений, гарантированно должна работать на любой платформе с достаточно стандартной реализацией языка C.

Ссылки

  • (англ.)

Примечания

  1. 14:00-17:00 (англ.) . ISO . Дата обращения: 21 января 2019.
  2. . ANSI. Дата обращения: 23 августа 2021. 31 марта 2022 года.
  3. . Дата обращения: 24 июня 2012. 10 октября 2016 года.
  4. . International Organization for Standardization. Дата обращения: 23 августа 2021. 29 марта 2022 года.
  5. . www.iso.org . Дата обращения: 23 августа 2021. 10 августа 2018 года.
  6. . www.iso-9899.info . Дата обращения: 23 августа 2021. 25 февраля 2005 года.
Источник —

Same as ANSI C