C99 — стандарт языка программирования Си. Определен в ISO/IEC 9899:1999, современная версия — ISO/IEC 9899:1999/Cor 3:2007 от 2007-11-15. Является развитием стандарта C90.
- Содержание
- История [ править | править код ]
- Новые возможности [ править | править код ]
- Обратная совместимость с C90 [ править | править код ]
- Поддержка распространёнными компиляторами [ править | править код ]
- Определение версии [ править | править код ]
- Направления развития стандарта [ править | править код ]
- Summary [ edit ]
- Licensing [ edit ]
- File history
- File usage
- Metadata
- Смотреть что такое «ISO/IEC 9899:1999» в других словарях:
Содержание
История [ править | править код ]
После процесса стандартизации ANSI спецификация языка Си некоторое время оставалась относительно неизменной, тогда как C++ продолжал развиваться, особенно во время его стандартизации. Нормативная поправка 1 создала новый стандарт языка Си в 1995 году, но только с точки зрения исправления некоторых деталей стандарта C89 и добавления расширенной поддержки интернациональных наборов символов. Тем не менее, стандарт подвергся дальнейшей ревизии в конце 1990-х, что привело к публикации стандарта ISO/IEC 9899:1999 в 1999 году. Этот стандарт часто упоминается как «C99». Он был принят в качестве стандарта ANSI в мае 2000 года. Международный стандарт Си поддерживается рабочей группой ISO/IEC JTC1/SC22/WG14.
Новые возможности [ править | править код ]
В C99 было добавлено несколько новых возможностей, многие из которых уже были реализованы в качестве расширения в некоторых компиляторах.
- Встраиваемые функции (объявленные с ключевым словом inline).
- Место, в котором возможно объявление переменных, больше не ограничено глобальной областью видимости и началом составного оператора (блока).
- Несколько новых типов данных, включая long long int , дополнительные расширенные целые типы, явный логический тип данных, а также комплексный тип ( complex ) для представления комплексных чисел.
- Массивы переменной длины (variable-length arrays).
- Поддержка однострочных комментариев, начинающихся с // , как в BCPL или C++.
- Новые библиотечные функции, как, например, snprintf .
- Новые заголовочные файлы, такие как stdbool.h и inttypes.h .
- Типовые математические функции ( tgmath.h ).
- Улучшена поддержка стандарта IEEE 754-2008.
- Составные константы (например, стало возможным определять структуры прямо в вызове функции: function((struct point)<4,2>) ).
- Новые инициализаторы для массивов и структур( int а[10] = < [0] = 100, [3] = 200>; struct mystruct
ob = < .c = 30, .a = 10 >; ). - Поддержка вариативных макросов (макросов переменной арности).
- Смягчение ( restrict ) ограничений для более агрессивной оптимизации кода.
Обратная совместимость с C90 [ править | править код ]
C99 является большей частью обратно совместимым с C90, но вместе с тем в некоторых случаях является более жёстким. В частности, объявление без указания типа больше не подразумевает неявное задание типа int . Комитет по стандартизации языка Си решил, что для компиляторов будет более важным определять пропуск по невнимательности указания типа, чем «тихая» обработка старого кода, полагавшаяся на неявное указание int . На практике же, компиляторы могли определять неуказание, но также допускали, что это int и продолжали компиляцию программы.
Поддержка распространёнными компиляторами [ править | править код ]
GCC и другие компиляторы языка Си поддерживают многие нововведения стандарта C99. Тем не менее, ощущается недостаточная поддержка стандарта со стороны крупных производителей средств разработки, таких как Microsoft и Borland, которые сосредоточились, в основном, на языке C++, так как C++ обеспечивает функциональность, схожую с предоставляемой нововведениями стандарта.
GCC, невзирая на его расширенную поддержку C99, все ещё является не полностью совместимой реализацией: некоторые особенности не реализованы или работают некорректно. [1]
Согласно Sun Microsystems, Sun Studio 9 и выше (которое доступно для свободного скачивания) сертифицирована под стандарт C99, для процессоров UltraSPARC, Intel x86, AMD 64. [2] Также сертифицирована IBM XL C/C++, для процессоров Power PC. Есть сертифицированные трансляторы других фирм. Интерпретатор языка Си Ch поддерживает основные особенности C99 [3] и свободно доступен в версиях для Windows, Linux, Mac OS X, Solaris, QNX и FreeBSD.
Определение версии [ править | править код ]
Стандартный макрос __STDC_VERSION__ определенный со значением 199901L , указывает, что поддержка C99 доступна. Как и макрос __STDC__ для C90, макрос __STDC_VERSION__ может быть использован для написания кода, который будет компилироваться компиляторами C90 и C99 по-разному. Ниже приведен пример, в котором с помощью макроса __STDC_VERSION__ проверяется, является ли inline ключевым словом.
Направления развития стандарта [ править | править код ]
После ратификации стандарта C99, рабочая группа по стандартизации подготовила технический отчёт, содержащий следующие улучшения: улучшенная поддержка встроенной обработки, дополнительные символьные типы данных (поддержка Unicode), библиотечные функции с улучшенной проверкой допустимых значений. Продолжается работа и над техническими отчётами, связанными с десятичными числами с плавающей запятой, дополнительными математическими специальными функциями и дополнительными функциями для работы с динамически распределяемой памятью. Комитеты по стандартизации Си и C++ совместно работают над спецификациями для многопоточного программирования.
В 2007 началась работа над заготовкой новой ревизии стандарта языка Си, неофициально называемой «C1x». Комитет по стандартизации языка Си поддержал стратегию, которая должна ограничить включение новых наработок, не «обкатанных» существующими реализациями.
Скорее всего, стандартная функция gets , которая была официально признана нерекомендуемой к использованию из-за многочисленных отчётов о проблемах касательно небезопасно спроектированного интерфейса, не будет включена в следующую ревизию стандарта языка Си.
![]()
Original file (1,651 × 2,338 pixels, file size: 173 KB, MIME type: image/png )
Summary [ edit ]
| Source | ||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Author | ||||||||||||||||||
| Permission (Reusing this file) |
| This image only consists of typefaces, individual words, slogans, or simple geometric shapes. These are not eligible for copyright alone because they are not original enough, and thus the image is considered to be in the public domain. For more information, see Wikipedia:Public domain – Fonts. Please note that there may be non-copyright restrictions protecting this image, such as trademarks and design patents. |
PD Public domain false false
File history
Click on a date/time to view the file as it appeared at that time.
| Date/Time | Thumbnail | Dimensions | User | Comment | |
|---|---|---|---|---|---|
| current | 23:47, 13 November 2012 | 1,651 × 2,338 (173 KB) | Mflatischler (talk | contribs) | Higher resolution (1651×2338) | |
| 16:52, 24 June 2010 | 360 × 509 (17 KB) | Loadmaster (talk | contribs) | < |
You cannot overwrite this file.
File usage
Metadata
This file contains additional information, probably added from the digital camera or scanner used to create or digitize it.
If the file has been modified from its original state, some details may not fully reflect the modified file.
Стандарты Международной организации по стандартизации (ИСО). Каталог (в 2-х частях). — М.: ФГУП «СТАНДАРТИНФОРМ» . 2008 .
Смотреть что такое «ISO/IEC 9899:1999» в других словарях:
ISO/IEC 9899:1999 — Inhaltsverzeichnis 1 K R C 2 C89, C90 3 C95 4 C99 5 Beispiele für den Unterschied zwischen verschiedenen Fassungen der Sprache C 6 Weblinks … Deutsch Wikipedia
ISO/IEC 9899:1990 — Inhaltsverzeichnis 1 K R C 2 C89, C90 3 C95 4 C99 5 Beispiele für den Unterschied zwischen verschiedenen Fassungen der Sprache C 6 Weblinks … Deutsch Wikipedia
ISO-C — Inhaltsverzeichnis 1 K R C 2 C89, C90 3 C95 4 C99 5 Beispiele für den Unterschied zwischen verschiedenen Fassungen der Sprache C 6 Weblinks … Deutsch Wikipedia
ISO 9899 — C (langage) Pour les articles homonymes, voir C. C … Wikipédia en Français
List of ISO standards — This is a list of ISO standards that are discussed in Wikipedia articles. For a list of all the more than 16,000 ISO standards (as of 2007), see the [http://www.iso.org/iso/en/CatalogueListPage.CatalogueList ISO Catalogue] .About 300 of the… … Wikipedia
Liste der ISO-Normen — Anmerkung: Die Liste erhebt keinen Anspruch auf Vollständigkeit oder Aktualität, sie ist ständig mit der Webseite der ISO abzugleichen. Einige wichtige Normen, Standards oder Technische Spezifikationen der ISO sind: ISO 2 Textilien; Bezeichnung… … Deutsch Wikipedia
Си (язык программирования) — У этого термина существуют и другие значения, см. Си. Запрос «Язык программирования Си» перенаправляется сюда; см. также другие значения. Си Класс языка: процедурный Тип исполнения: компилируемый Появился в: 1969 1973 Автор( … Википедия
C-Plusplus — C++ Paradigmen: imperativ, strukturiert, objektorientiert, generisch Erscheinungsjahr: 1983 Entwickler: Bjarne Stroustrup … Deutsch Wikipedia
C-plus-plus — C++ Paradigmen: imperativ, strukturiert, objektorientiert, generisch Erscheinungsjahr: 1983 Entwickler: Bjarne Stroustrup … Deutsch Wikipedia
C plus plus — C++ Paradigmen: imperativ, strukturiert, objektorientiert, generisch Erscheinungsjahr: 1983 Entwickler: Bjarne Stroustrup … Deutsch Wikipedia