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
. - Возможности, совместимые с , включая 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.
Ссылки
- Рабочая группа ISO C (англ.)
Примечания
- 14:00-17:00 ISO/IEC 9899:1999 (англ.). ISO. Дата обращения: 21 января 2019.
- INCITS/ISO/IEC 9899-2012 . ANSI. Дата обращения: 23 августа 2021. 31 марта 2022 года.
- ISO/IEC 9899:1999 - Programming Languages -- C . Дата обращения: 24 июня 2012. 10 октября 2016 года.
- ISO/IEC 9899:2011/Cor 1:2012 . International Organization for Standardization. Дата обращения: 23 августа 2021. 29 марта 2022 года.
- ISO/IEC 9899:2018 - Information technology -- Programming languages -- C . www.iso.org. Дата обращения: 23 августа 2021. 10 августа 2018 года.
- The Standard - C . www.iso-9899.info. Дата обращения: 23 августа 2021. 25 февраля 2005 года.
Википедия, чтение, книга, библиотека, поиск, нажмите, истории, книги, статьи, wikipedia, учить, информация, история, скачать, скачать бесплатно, mp3, видео, mp4, 3gp, jpg, jpeg, gif, png, картинка, музыка, песня, фильм, игра, игры, мобильный, телефон, Android, iOS, apple, мобильный телефон, Samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Сеть, компьютер