名前空間
変種
操作

適合性

From cppreference.com
< c‎ | language

適合性には3つの定義があります。

  • 厳密適合プログラム - 厳密に定義された言語構成要素のみを使用します。これは、単一の動作を持つ構成要素です。指定されていない、未定義、または実装定義の動作を除外し、実装の最小制限を超えません。
  • 適合プログラム - 適合実装で許容されるもの。
  • 適合実装 -
    • 適合ホスト実装は、すべての厳密適合プログラムを受け入れる必要があります。
    • 適合フリースタンディング実装は、ライブラリ句(句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__ が事前定義されている場合、数値変換関数( atoXstrtoX、および strfromX)もフリースタンディングですが、それらの動作は、プログラムが FENV_ACCESS プラグマの状態を ON に設定していない場合にのみ、フリースタンディング環境で厳密に定義される必要があります。 <stdlib.h> の他のコンポーネントは、フリースタンディング実装によって提供される必要はありません。
  • <string.h> では、 strdupstrndupstrcollstrxfrmstrtok、および 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++ ドキュメントフリースタンディングおよびホスト実装 について)
English 日本語 中文(简体) 中文(繁體)