Введение
Стандарты языка программирования C – это последовательные стандарты для языка программирования C, опубликованные Американским национальным институтом стандартов (ANSI) и ISO/IEC JTC 1/SC 22/WG 14 Международной организации по стандартизации (ISO) и Международной электротехнической комиссии (IEC). Исторически, эти названия относились к оригинальной и наиболее поддерживаемой версии стандарта (известной как C89 или C90). Разработчикам программного обеспечения, пишущим на C, рекомендуется придерживаться стандартов, поскольку это способствует переносимости кода между различными компиляторами.
the programming language standard
ANSI C, ISO C, and Standard C are successive standards for the C programming language published by the American National Standards Institute (ANSI) and ISO/IEC JTC 1/SC 22/WG 14 of the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC). Historically, the names referred specifically to the original and best supported version of the standard (known as C89 or C90). Software developers writing in C are encouraged to conform to the standards, as doing so helps portability between compilers.
История и перспективы
Первый стандарт для языка C был опубликован ANSI. Хотя этот документ впоследствии был принят ISO/IEC, а последующие редакции, опубликованные ISO/IEC, были приняты ANSI, термин "ANSI C" до сих пор используется для обозначения этого стандарта. Некоторые разработчики программного обеспечения используют термин ISO C, в то время как другие придерживаются нейтральной позиции и используют термин "Стандартный C".
Неформальная спецификация: K&R C (C78)
Неформальное описание в 1978 году (книга Брайана Кернигана и Денниса Ричи "Язык программирования C").
Стандартизация C
В 1983 году Американский национальный институт стандартов сформировал комитет X3J11 для разработки стандартной спецификации языка C. В 1985 году был выпущен первый предварительный стандарт, иногда называемый C85. В 1986 году был выпущен еще один предварительный стандарт, иногда называемый C86. Предварительная версия стандарта C была опубликована в 1988 году и иногда называется C88.
С89
Стандарт ANSI был завершен в 1989 году и ратифицирован как ANSI X3.159-1989 "Язык программирования C". Эта версия языка часто называется "ANSI C". Впоследствии для его отличия от C90 иногда используется обозначение "C89", при этом применяется аналогичный принцип именования.
С90
Тот же стандарт, что и C89, был ратифицирован ISO/IEC как ISO/IEC 9899:1990, с изменениями, касающимися только форматирования, и иногда называется C90. Таким образом, термины "C89" и "C90" обозначают по сути один и тот же язык. Этот стандарт был отозван как ANSI/INCITS, так и ISO/IEC.
С17
С 2018 года "C17" является действующим стандартом языка программирования C. C17 исправляет ошибки в C11, не добавляя новых возможностей языка.
С23
C23 — неофициальное название следующей крупной ревизии стандарта языка C.
Поддержка крупных компиляторов
ANSI C теперь поддерживается почти всеми широко используемыми компиляторами. GCC и Clang – два основных популярных на сегодняшний день компилятора C, оба основаны на C11 с обновлениями, включающими изменения из более поздних спецификаций, таких как C17. Любой исходный код, написанный исключительно на стандартном C и не содержащий аппаратно-зависимых предположений, практически гарантированно будет правильно скомпилирован на любой платформе с соответствующей реализацией C. Без таких мер предосторожности большинство программ могут компилироваться только на определенной платформе или с конкретным компилятором, например, из-за использования нестандартных библиотек, таких как библиотеки графического интерфейса пользователя, или из-за зависимости от атрибутов, специфичных для компилятора или платформы, таких как точный размер определенных типов данных и порядок байтов.