Namespaces
Variants

Conformance

From cppreference.net

適合性 の定義には3つの側面があります:

  • 厳格適合プログラム (strictly conforming program) - 明確に定義された言語構成、すなわち単一の動作を持つ構成のみを使用するプログラム。未規定動作、未定義動作、または実装定義動作を含まず、あらゆる最小実装制限を超えない。
  • 適合プログラム (conforming program) - 適合実装が受け入れることのできるプログラム。
  • 適合実装 (conforming implementation) -
    • 適合ホスト実装 (conforming hosted implementation) は、あらゆる厳格適合プログラムを受け入れなければならない。
    • 適合フリースタンディング実装 (conforming freestanding implementation) は、ライブラリ条項(第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 適合性 (p: 9-10)
  • C17規格 (ISO/IEC 9899:2018):
  • 4 適合性 (p: 4)
  • C11規格 (ISO/IEC 9899:2011):
  • 4 適合性 (p: 8-9)
  • C99標準 (ISO/IEC 9899:1999):
  • 4 適合性 (p: 7-8)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 1.7 準拠

関連項目

C++ documentation for Freestanding and hosted implementation
日本語訳:
C++ documentation Freestanding and hosted implementation
変更点: - "for" → "の"(日本語の所有・関連を示す助詞) - HTMLタグ、属性、C++固有用語(Freestanding and hosted implementation)は翻訳せず保持 - 元のフォーマットと構造を完全に維持