Spec-Zone.ru › C

Соответствие

Соответствие имеет три определения:

  • строго соответствующая программа — использует только хорошо определённые конструкции языка, то есть конструкции с единственным поведением. Она не допускает неспецифицированного, неопределённого или определяемого реализацией поведения и не превышает никаких минимальных ограничений реализации.
  • соответствующая программа — допустима для соответствующей реализации.
  • соответствующая реализация —
    • Соответствующая реализация с поддержкой ОС должна принимать любую строго соответствующую программу.
    • Соответствующая автономная реализация должна принимать любую строго соответствующую программу, в которой использование возможностей, указанных в разделе о библиотеке (раздел 7), ограничено содержимым заголовков стандартной библиотеки для автономной реализации (см. ниже).
    • Соответствующая реализация может иметь расширения (включая дополнительные библиотечные функции) при условии, что они не изменяют поведение любой строго соответствующей программы.

Пояснение

Стандарт не определяет никаких минимальных ограничений реализации для единиц трансляции. Среда с поддержкой ОС имеет операционную систему; автономная среда — нет. Программа, работающая в среде с поддержкой ОС, может использовать все возможности, описанные в разделе о библиотеке (раздел 7); программа, работающая в автономной среде, может использовать подмножество возможностей библиотеки, требуемое разделом 4.

Заголовки стандартной библиотеки для автономной реализации

Все возможности стандартной библиотеки в каждом полностью автономном заголовке должны предоставляться автономной реализацией.

Некоторые заголовки стандартной библиотеки являются условно автономными.

  • Если реализация заранее определяет макрос __STDC_IEC_60559_BFP__ или __STDC_IEC_60559_DFP__, то <math.h> и <fenv.h> являются полностью автономными заголовками. Однако поведение функций в этих заголовках должно быть хорошо определено в автономной среде только в том случае, если программа не устанавливает состояние прагмы FENV_ACCESS в значение ON.

Некоторые заголовки стандартной библиотеки являются частично автономными.

  • В <stdlib.h> элемент memalignment является автономным. Кроме того, если заранее определены __STDC_IEC_60559_BFP__ или __STDC_IEC_60559_DFP__, функции преобразования чисел (atoX, strtoX и strfromX) также являются автономными, однако их поведение должно быть хорошо определено в автономной среде только в том случае, если программа не устанавливает состояние прагмы FENV_ACCESS в значение ON. Автономная реализация не обязана предоставлять никакие другие компоненты из <stdlib.h>.
  • В <string.h> автономная реализация не обязана предоставлять strdup, strndup, strcoll, strxfrm, strtok и strerror.
(начиная с 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) Макросы для работы с байтовым и битовым представлением типов
Условно полностью автономные заголовки стандартной библиотеки
<fenv.h> (начиная с C23) Среда вычислений с плавающей точкой
<math.h> (начиная с C23) Общие математические функции
Частично автономные заголовки стандартной библиотеки
<stdlib.h> (начиная с C23) Общие утилиты: управление памятью, утилиты для программ, преобразования строк, случайные числа, алгоритмы
<string.h> (начиная с C23) Обработка строк

Ссылки

  • Стандарт C23 (ISO/IEC 9899:2024):
    • 4 Соответствие (стр. 9–10)
  • Стандарт 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/c/language/conformance

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API