私が持っている質問は、主にセクション 4、パラグラフ 6に関連しています。
準拠する実装の 2 つの形式は、ホスト型と独立型です。適合するホストされた実装は、厳密に適合するプログラムを受け入れるものとします。
私が理解しているように、これはファイルシステム、割り当てられたメモリ、およびスレッドを備えた典型的なアプリケーション環境を構成しています...
準拠する独立した実装は、ライブラリ条項 (条項 7) で指定された機能の使用が標準ヘッダー 、、、、、、、、、および の内容に限定されている厳密に
<float.h>適合するプログラム<iso646.h>を受け入れるものとします。<limits.h><stdalign.h><stdarg.h><stdbool.h><stddef.h><stdint.h><stdnoreturn.h>
...そしてこれは、標準のファイルシステム、割り当てられたメモリまたはスレッドを持たない、典型的なカーネルおよび/または組み込みの最小限の環境を構成します(とりわけ)。
準拠する実装には、厳密に準拠するプログラムの動作を変更しないという条件で、拡張 (追加のライブラリ関数を含む) を含めることができます。
これにより、ホストされた実装に、ホストされた実装または独立した実装と自称する自由が与えられたかのように見えます。ファイルシステム、割り当てられたメモリ、またはスレッド (とりわけ) に関しては、これらは拡張カテゴリに分類されるため、単に実装することができます。毎回エラーを示す値を返すインターフェース。ほんの数例を挙げると:
fopen、fgetsそしてmalloc戻ることができますNULLfprintf、fscanf、fputcおよびfgetc返すことができますEOFthrd_create戻ることができますthrd_error(「リクエストを受け入れることができなかった」ことを示します)
これは、セクション 4、パラグラフ 6 が与える区別が事実上無意味であることを意味します。ホストされた独立した実装でこれらの関数の実際の機能レベルを保証する要件はありますか? たとえば、上記の関数は、対応する失敗値以外の値を実際に返すことができる必要がありますか?