BohYoh.comトップページへ
C & C++ FAQ
目次

C++ Cライブラリ用ヘッダ<c****>と<****.h>の違いは何ですか。

 以下に示すように、C++では、C言語用の標準ライブラリは2種類のヘッダで提供されています。
 
<assert.h><cassert>
<ctype.h><cctype>
<errno.h><cerrno>
<float.h><cfloat>
<iso646.h><ciso646>
<limits.h><climits>
<locale.h><clocale>
<math.h><cmath>
<setjmp.h><csetjmp>
<signal.h><csignal>
<stdarg.h><cstdarg>
<stddef.h><cstddef>
<stdio.h><cstdio>
<stdlib.h><cstdlib>
<string.h><cstring>
<time.h><ctime>
<wchar.h><cwchar>
<wctype.h><cwctype>

 C++ライブラリの名前空間内に置かれた“cname”というヘッダが、名前空間stdの名前空間有効範囲の中にも置かれ、その後に明示的に《using 指令》が指定されているかのように振る舞います。
 たとえば、<cstdlib>は、名前空間stdの中に、その宣言及び定義を提供します。一方、ヘッダ<stdlib.h>は、これらを大域的名前空間でも利用可能にします。


■ 根拠 ■
標準C++ Annex D D.5 Standard C library headers

戻る

BohYoh.comロゴ