Совместимость
Совместимость имеет трехкратное определение:
- строго совместимая программа — использует только хорошо определённые конструкции языка, то есть конструкции с единственным поведением. Она исключает неопределённое, не определённое или зависящее от реализации поведение и не превышает никаких минимальных пределов реализации.
- совместимая программа — приемлема для совместимой реализации.
- совместимая реализация —
- Совместимая реализация с хостингом должна принимать любую строго совместимую программу.
- Совместимая автономная реализация должна принимать любую строго совместимую программу, в которой использование функций, указанных в разделе библиотеки (раздел 7), ограничено содержимым заголовков автономной стандартной библиотеки (см. ниже).
- Совместимая реализация может иметь расширения (включая дополнительные функции библиотеки), при условии, что они не изменяют поведение любой строго совместимой программы.
Объяснение
Стандарт не определяет никаких минимальных ограничений на размеры единиц трансляции. Хостированная среда имеет операционную систему; автономная среда — нет. Программа, выполняющаяся в хостированной среде, может использовать все функции, описанные в разделе библиотеки (раздел 7); программа, выполняющаяся в автономной среде, может использовать подмножество функций библиотеки, требуемых разделом 4.
Заголовки автономной стандартной библиотеки
Все функции стандартной библиотеки в каждом полном автономном заголовке должны предоставляться автономной реализацией.
|
Некоторые заголовки стандартной библиотеки условно автономны.
В частично автономном заголовке только часть функций стандартной библиотеки должна предоставляться автономной реализацией. |
(с C23) |
Полностью автономные заголовки стандартной библиотеки | |
<float.h> |
Пределы типов с плавающей точкой |
<iso646.h> (с C95) |
Альтернативные написания операторов |
<limits.h> |
Диапазоны целочисленных типов |
<stdalign.h> (с C11) |
alignas и alignof удобные макросы |
<stdarg.h> |
Переменные аргументы |
<stdbool.h> (с C99) |
Макросы для логического типа |
<stddef.h> |
Общие определения макросов |
<stdint.h> (с C99) |
Целочисленные типы фиксированной ширины |
<stdnoreturn.h> (с C11) |
noreturn удобный макрос |
<stdbit.h> (с C23) |
Макросы для работы с байтовым и битовым представлениями типов |
Частично автономные заголовки стандартной библиотеки | |
<string.h> (с C23) |
Обработка строк |
Условно полностью автономные заголовки стандартной библиотеки | |
<fenv.h> (с C23) |
Среда с плавающей запятой |
<math.h> (с C23) |
Общие математические функции |
Условно частично автономные заголовки стандартной библиотеки | |
<stdlib.h> (с C23) |
Общие утилиты: управление памятью, утилиты программ, преобразования строк, случайные числа, алгоритмы |
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 4 Совместимость (стр: 4)
- Стандарт C11 (ISO/IEC 9899:2011):
- 4 Совместимость (стр: 8-9)
- Стандарт C99 (ISO/IEC 9899:1999):
- 4 Совместимость (стр: 7-8)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 1.7 Соответствие
См. также
| Документация C++ для Автономной и хостированной реализации |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/language/conformance