~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 3146D947A8479B6F0B81A3EDD207BEE8__1711692600 ✰
Заголовок документа оригинал.:
✰ ANSI C - Wikipedia ✰
Заголовок документа перевод.:
✰ ANSI C — Википедия, бесплатная энциклопедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/ANSI_C ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/31/e8/3146d947a8479b6f0b81a3edd207bee8.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/31/e8/3146d947a8479b6f0b81a3edd207bee8__translat.html ✰
Дата и время сохранения документа:
✰ 12.06.2024 14:10:53 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 29 March 2024, at 09:10 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

ANSI C — Википедия, бесплатная энциклопедия Jump to content

АНСИ С

Из Википедии, бесплатной энциклопедии

ANSI C , ISO C и Standard C — это последующие стандарты языка программирования C , опубликованные Американским национальным институтом стандартов (ANSI) и ISO/IEC JTC 1/SC 22 /WG 14 Международной организации по стандартизации (ISO) и Международной организации по стандартизации (ISO). Международная электротехническая комиссия (МЭК). Исторически сложилось так, что названия относились конкретно к исходной и наиболее поддерживаемой версии стандарта (известной как C89 или C90 ). Разработчикам программного обеспечения, пишущим на C, рекомендуется соблюдать стандарты, поскольку это способствует переносимости между компиляторами.

История и мировоззрение [ править ]

Первый стандарт C был опубликован ANSI. Хотя этот документ впоследствии был принят ISO/IEC, а последующие версии, опубликованные ISO/IEC, были приняты ANSI, «ANSI C» по-прежнему используется для обозначения стандарта. [1] В то время как некоторые разработчики программного обеспечения используют термин ISO C, другие нейтральны к стандартизации и используют стандарт C.

Неофициальная спецификация: K&R C ( C78 ) [ править ]

Неформальная спецификация 1978 года ( Брайана Кернигана и Денниса Ритчи книга «Язык программирования C» ).

Стандартизация C [ править ]

В 1983 году Американский национальный институт стандартов сформировал комитет X3J11 для установления стандартной спецификации C. В 1985 году был выпущен первый проект стандарта, иногда называемый C85 . В 1986 году был выпущен еще один проект стандарта, иногда называемый C86 . Предварительная версия Standard C была опубликована в 1988 году и иногда называлась C88 . [2]

C89 [ править ]

Стандарт ANSI был разработан в 1989 году и ратифицирован как ANSI X3.159-1989 «Язык программирования C». Эту версию языка часто называют «ANSI C». Позже иногда используется метка «C89», чтобы отличить его от C90, но с использованием того же метода маркировки.

C90 [ править ]

Тот же стандарт, что и C89, был ратифицирован ISO/IEC как ISO/IEC 9899:1990, с изменениями только форматирования. [3] который иногда называют C90. Следовательно, термины «C89» и «C90» относятся по существу к одному и тому же языку.

Этот стандарт был отменен как ANSI/INCITS [4] и ИСО/МЭК. [5]

C95 [ править ]

В 1995 году ISO / IEC опубликовал расширение стандарта C под названием «Поправка 1». В конечном итоге его полное название стало ISO/IEC 9899:1990/AMD1:1995 или по прозвищу C95 . Помимо исправления ошибок, в возможности языка были внесены дальнейшие изменения. [6] [7] такой как:

  • Улучшена поддержка многобайтовых и широких символов в стандартной библиотеке. <wchar.h> и <wctype.h> а также многобайтовый ввод -вывод
  • Добавление орграфов в язык
  • Спецификация стандартных макросов для альтернативной спецификации операторов, например and для &&
  • Спецификация стандартного макроса __STDC_VERSION__

В дополнение к поправке ISO опубликовало два технических исправления для C90:

  • ISO/IEC 9899:1990/Cor 1:1994 TCOR1 в 1994 г. [8]
  • ISO/IEC 9899:1990/Кор 2:1996 в 1996 г. [9]

Тест препроцессора на с совместимость C95

#if define(__STDC_VERSION__) && __STDC_VERSION__ >= 199409L 

 /* Исходный код, совместимый с C95.   */ 
 #elif определено(__STDC__) 
 /* Исходный код, совместимый с C89.   */ 
 #конециф 

C99 [ править ]

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

ISO опубликовала три технических исправления для C99:

  • ИСО/МЭК 9899:1999/Кор 1:2001(Е)
  • ИСО/МЭК 9899:1999/Кор 2:2004(Е)
  • ISO/IEC 9899:1999/Cor 3:2007(E), отличающийся отказом от стандартной библиотечной функции, получает

Этот стандарт был отменен как ANSI/INCITS [11] и ИСО/МЭК [12] в пользу С11.

С11 [ править ]

C11 был официально ратифицирован и опубликован 8 декабря 2011 года. Примечательные особенности включают улучшенную поддержку Unicode , выражения общего типа с использованием нового _Generic ключевое слово, кросс-платформенный многопоточный API ( threads.h), а атомарные типы поддерживаются как в основном языке, так и в библиотеке ( stdatomic.h).

ISO опубликовало одно техническое исправление для C11:

  • ИСО/МЭК 9899:2011/Кор 1:2012 [13]

C17[editС17

По состоянию на октябрь 2018 г. , «C17» — текущий стандарт языка программирования C. [14]

C17 устраняет дефекты C11 без введения новых функций языка. [15]

С23 [ править ]

C23 — неофициальное название следующей основной языка C. версии стандарта [16]

Другие публикации ISO по теме [ править ]

В рамках процесса стандартизации ISO/IEC также публикует технические отчеты и спецификации , относящиеся к языку C:

  • ИСО/МЭК ТР 19769:2004, [17] о расширениях библиотеки для поддержки форматов преобразования Unicode, интегрированных в C11
  • ИСО/МЭК ТР 24731-1:2007, [18] о расширениях библиотеки для поддержки интерфейсов с проверкой границ, интегрированных в C11
  • ИСО/МЭК ТР 18037:2008, [19] о встроенных расширениях C
  • ИСО/МЭК ТР 24732:2009, [20] по десятичной арифметике с плавающей запятой, заменено ISO/IEC TS 18661-2:2015
  • ИСО/МЭК ТР 24747:2009, [21] о специальных математических функциях,
  • ИСО/МЭК ТР 24731-2:2010, [22] о расширениях библиотеки для поддержки функций динамического размещения
  • ИСО/МЭК ТС 17961:2013, [23] по безопасному кодированию на C
  • ИСО/МЭК ТС 18661-1:2014, [24] по IEC 60559:2011 - совместимая двоичная арифметика с плавающей запятой
  • ИСО/МЭК ТС 18661-2:2015, [25] совместимой со стандартом IEC 60559:2011 с плавающей запятой, на десятичной арифметике
  • ИСО/МЭК ТС 18661-3:2015, [26] на обмене, совместимом с IEC 60559:2011, и расширенных типах с плавающей запятой
  • ИСО/МЭК ТС 18661-4:2015, [27] дополнительные функции, совместимые с IEC 60559:2011

Другие технические спецификации находятся в разработке и ожидают утверждения, включая пятую и последнюю часть TS 18661, спецификацию программной транзакционной памяти и расширения параллельной библиотеки. [28]

основных компиляторов стороны Поддержка со

ANSI C сейчас поддерживается почти всеми широко используемыми компиляторами. GCC и Clang — два основных популярных сегодня компилятора C, оба основаны на C11 с обновлениями, включая изменения из более поздних спецификаций, таких как C17. [29] [30] Любой исходный код, написанный только на стандарте C и без каких-либо допущений, зависящих от аппаратного обеспечения, практически гарантированно будет корректно компилироваться на любой платформе с соответствующей реализацией C. Без таких мер предосторожности большинство программ могут компилироваться только на определенной платформе или с помощью определенного компилятора, например, из-за использования нестандартных библиотек, таких как библиотеки графического интерфейса , или из-за использования атрибутов, специфичных для компилятора или платформы. такие как точный размер определенных типов данных и порядок байтов .

Возможность обнаружения соответствия [ править ]

Чтобы смягчить различия между K&R C и стандартом ANSI C, __STDC__ Макрос («стандартный c») можно использовать для разделения кода на разделы ANSI и K&R.

 #if define(__STDC__) && __STDC__ 
  extern   int   getopt  (  int  ,   char   *   const   *  ,   const   char   *  ); 
   #else 
  extern   int   getopt  (); 
   #endif 

В приведенном выше примере прототип используется в объявлении функции для реализаций, совместимых с ANSI, тогда как в противном случае используется устаревшее объявление, не являющееся прототипом. Начиная с C99, они по-прежнему соответствуют ANSI. Обратите внимание, как этот код проверяет как определение, так и оценку: это связано с тем, что некоторые реализации могут устанавливать __STDC__ до нуля, что указывает на несоответствие ANSI. [31]

Поддержка компилятора [ править ]

Список компиляторов, поддерживающих ANSI C:

См. также [ править ]

Ссылки [ править ]

  1. ^ Брэд Келечава (14 сентября 2017 г.). «Происхождение ANSI C и ISO C» . Проверено 14 августа 2018 г.
  2. ^ Ричард Хейл Шоу (13 сентября 1988 г.). «Стандарт C: проект ANSI растет» . Журнал ПК . Том. 7, нет. 15. С. 116–117 . Проверено 15 ноября 2022 г.
  3. ^ «Стандарты — использование коллекции компиляторов GNU (GCC)» . Проверено 24 июня 2012 г.
  4. ^ «ИНЦИТС/ИСО/МЭК 9899» . www.techstreet.com . Проверено 3 октября 2018 г.
  5. ^ «ISO/IEC 9899:1990 – Языки программирования – C» . Проверено 24 июня 2012 г.
  6. ^ Клайв Д. У. Физер (12 сентября 2010 г.). «Краткая характеристика Нормативного приложения 1» .
  7. ^ «ИСО/МЭК 9899:1990/Поправка 1:1995» . Международная Организация Стандартизации. 22 марта 2013 г.
  8. ^ «ИСО/МЭК 9899:1990/Кор 1:1994» . ИСО . Проверено 21 января 2019 г.
  9. ^ «ИСО/МЭК 9899:1990/Кор 2:1996» . ИСО . Проверено 21 января 2019 г.
  10. ^ «ИСО/МЭК 9899:1999» . ИСО . Проверено 21 января 2019 г.
  11. ^ «ИНЦИТС/ИСО/МЭК 9899-2012» . АНСИ.
  12. ^ «ISO/IEC 9899:1999 – Языки программирования – C» . Проверено 24 июня 2012 г.
  13. ^ «ИСО/МЭК 9899:2011/Кор 1:2012» . Международная Организация Стандартизации.
  14. ^ «ISO/IEC 9899:2018 – Информационные технологии. Языки программирования – C» . www.iso.org .
  15. ^ «Стандарт-С» . www.iso-9899.info .
  16. ^ «История Си» . cppreference .
  17. ^ «ИСО/МЭК ТР 19769:2004» . Международная Организация Стандартизации.
  18. ^ «ИСО/МЭК ТР 24731-1:2007» . Международная Организация Стандартизации.
  19. ^ «ИСО/МЭК ТР 18037:2008» . Международная Организация Стандартизации.
  20. ^ «ИСО/МЭК ТР 24732:2009» . Международная Организация Стандартизации.
  21. ^ «ИСО/МЭК ТР 24747:2009» . Международная Организация Стандартизации.
  22. ^ «ИСО/МЭК ТР 24731-2:2010» . Международная Организация Стандартизации.
  23. ^ «ИСО/МЭК ТС 17961:2013» . Международная Организация Стандартизации.
  24. ^ «ИСО/МЭК ТС 18661-1:2014» . Международная Организация Стандартизации.
  25. ^ «ИСО/МЭК ТС 18661-2:2015» . Международная Организация Стандартизации.
  26. ^ «ИСО/МЭК ТС 18661-3:2015» . Международная Организация Стандартизации.
  27. ^ «ИСО/МЭК ТС 18661-4:2015» . Международная Организация Стандартизации.
  28. ^ «Экспериментальные функции C» . cppreference.com . Проверено 16 января 2016 г.
  29. ^ «2 языковых стандарта, поддерживаемых GCC — язык 2.1 C» . Использование коллекции компиляторов GNU (GCC) . GCC, Коллекция компиляторов GNU . Проверено 5 февраля 2019 г.
  30. ^ «Языковая совместимость» . Интерфейс семейства языков Clang C для LLVM . Проверено 5 февраля 2019 г.
  31. ^ «Стандартные предопределенные имена макросов» . www.ibm.com . Проверено 10 апреля 2019 г.
  32. ^ «Пакет разработчика HP C/ANSI C» . Проверено 12 июля 2015 г.
  33. ^ Поддержка ISO C11 добавлена ​​в компиляторы IBM XL C/C++.
  34. ^ ссылка на страницы Пеллеса C

Дальнейшее чтение [ править ]

  • Шрайнер, Аксель-Тобиас (1993). Объектно-ориентированное программирование с использованием ANSI-C . Хансер. ISBN  3-446-17426-5 .

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 3146D947A8479B6F0B81A3EDD207BEE8__1711692600
URL1:https://en.wikipedia.org/wiki/ANSI_C
Заголовок, (Title) документа по адресу, URL1:
ANSI C - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)