標準Cライブラリ
スレッド<threads.h>
C11で追加。 日付及び時間 |
この節の加筆が望まれています。 |
C11で追加。
多バイト文字及びワイド文字拡張ユーティリティ<wchar.h>
この節の加筆が望まれています。 |
ワイド文字種分類及びワイド文字大文字小文字ユーティリティ<wctype.h>
この節の加筆が望まれています。 |
フリースタンディング環境
フリースタンディング環境では、C89 では標準Cライブラリのうち float.h
、limits.h
、stdarg.h
、stddef.h
に対応している。ISO/IEC 9899/AMD1:1995 では加えて iso646.h
が、C99 では更に stdbool.h
および stdint.h
に対応している。
Unix系の標準Cライブラリ
Unix系に関係するPOSIX、SUS、Linux Standard Baseなどの標準仕様では、標準Cライブラリを包含し、さらに追加の関数やマクロ、型などが規定されている。
GNU/Linux(多くのLinuxディストリビューション)では、一般的にGNU Cライブラリ (glibc) が標準Cライブラリの実装として用いられている。BSD系列での実装は、BSD libcと呼称される。
C++における標準Cライブラリ
C++03の標準C++ライブラリでは、C95相当の標準Cライブラリを包含している。更には、C95では任意実装であったfloat
型やdouble
型の数学関数も常にサポートされる。C++11ではC99相当の標準Cライブラリと uchar.h
を包含している。
標準Cライブラリにおけるヘッダ xyz.h
は、C++では cxyz
というヘッダにマッピングされる。各識別子は std
名前空間内で宣言される。また、標準Cライブラリとの互換性を持たせるため、xyz.h
形式のヘッダも使用することができ、std
名前空間内で宣言された識別子はusing
指令によってグローバル名前空間に引き出される。
C++固有の事情から、一部の関数についてはC言語との互換性が低下している。具体的にはmemchr
関数やstrstr
関数等がそれにあたる。すなわち、引数として渡されるポインタが指す型がconst
修飾されているか否かにより、返却値の型もそれに合わせて変更されるように多重定義されている。
Cの場合
char *strchr(const char*, int);
C++の場合
const char *strchr(const char*, int);
char *strchr(char*, int);
脚註
- ^ a b c ISO/IEC 9899/AMD1:1995
- ^ ISO/IEC 9899:1999 TC3 | WG14/N1256, Committee Draft | Septermber 7, 2007 | 7.5 Errors <errno.h>
- ^ ISO/IEC 9899:201x | WG14/N1548, Committee Draft | December 2, 2010 | 7.5 Errors <errno.h>
- ^ N2596 working draft — December 11, 2020 ISO/IEC 9899:202x (E). ISO/IEC JTC1/SC22/WG14. p. 20, §5.2.4.2.1 Characteristics of integer types <limits.h>