Namespaces
Variants

Conformance

From cppreference.net

Соответствие имеет трёхчастное определение:

  • строго соответствующая программа - использует только хорошо определённые языковые конструкции, то есть конструкции с единственным поведением. Она исключает неопределённое, неспецифицированное или определяемое реализацией поведение и не превышает никаких минимальных ограничений реализации.
  • соответствующая программа - приемлемая для соответствующей реализации.
  • соответствующая реализация -
    • Соответствующая хостовая реализация должна принимать любую строго соответствующую программу.
    • Соответствующая автономная реализация должна принимать любую строго соответствующую программу, в которой использование возможностей, указанных в разделе библиотеки (раздел 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__ , функции численного преобразования ( ato X , strto X , и strfrom X ) также являются автономными, при этом их поведение должно быть определено в автономной среде только если программа не устанавливает состояние прагмы 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++ documentation for Freestanding and hosted implementation