Interested Article - ANSI C
- 2020-05-07
- 1
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.
Ссылки
- (англ.)
Примечания
- 14:00-17:00 (англ.) . ISO . Дата обращения: 21 января 2019.
- . ANSI. Дата обращения: 23 августа 2021. 31 марта 2022 года.
- . Дата обращения: 24 июня 2012. 10 октября 2016 года.
- . International Organization for Standardization. Дата обращения: 23 августа 2021. 29 марта 2022 года.
- . www.iso.org . Дата обращения: 23 августа 2021. 10 августа 2018 года.
- . www.iso-9899.info . Дата обращения: 23 августа 2021. 25 февраля 2005 года.
- 2020-05-07
- 1