標準ヘッダーは次のとおりです。
表 E-4 標準ヘッダーassert.h | locale.h | stddef.h |
ctype.h | math.h | stdio.h |
errno.h | setjmp.h | stdlib.h |
float.h | signal.h | string.h |
limits.h | stdarg.h | time.h |
ほとんどの実装では、さらに多くのヘッダーが用意されています。しかし、ANSI C に厳密に準拠するプログラムが使用できるのは、上記ヘッダーだけです。
これらヘッダーの一部の内容については、他の規格ではわずかに異なります。たとえば、POSIX (IEEE 1003.1) は、fdopen を stdio.h で宣言するように指定しています。これら 2 つの規格が共存するために、POSIX では、このような追加の名前が存在することを保証するためには任意のヘッダーをインクルードする前にマクロ _POSIX_SOURCE を #define で定義しなければならないと規定しています。X/Open の『Portability Guide』によると、X/Open もこのマクロ方式を使用して拡張しています。X/Open のマクロは _XOPEN_SOURCE です。
ANSI C は、標準ヘッダーがそれ自身だけで完結し、べき等 (何度指定しても同じ) であることを要求しています。どの標準ヘッダーも、その前後で他のヘッダーを #include でインクルードする必要はありません。標準ヘッダーは何度 #include でインクルードしても、問題は発生しません。ANSI C 規格では、安全なコンテキストにおいてのみ、標準ヘッダーを #include でインクルードすることを要求します。したがって、ヘッダーで使用される名前は変更されないことが保証されます。