C ++ 11標準(強調鉱山)から:
D.5 C標準ライブラリヘッダー[depr.c.headers]
- C標準ライブラリとの互換性のために...
- それぞれがname.hという形式の名前を持つすべてのCヘッダーは、対応するcnameヘッダーによって標準ライブラリの名前空間に配置された各名前がグローバル名前空間スコープ内に配置されているかのように動作します。これらの名前が最初に名前空間スコープ内で宣言または定義されるかどうかは指定されていません(3.3.6)の名前空間STD、次いで明示的な使用、宣言(7.3.3)によってグローバルネームスペーススコープに注入されます。
- 例:ヘッダーは、名前空間内での宣言と定義を
<cstdlib>
確実に提供します
std
。また、グローバル名前空間内でこれらの名前を提供する場合もあります。ヘッダーは、C標準と同様に、グローバル名前空間内で同じ宣言と定義を<stdlib.h>
確実に提供します。名前空間内でこれらの名前を提供することもあります。std
«name.h»ヘッダーの使用は非推奨で、将来のリビジョンから削除する候補として識別されています。
そのため、«cname»ヘッダーを含め、std
名前空間の宣言と定義を使用することをお勧めします。
何らかの理由で«name.h»ヘッダーを使用する必要がある場合(非推奨、上記を参照)、グローバル名前空間の宣言と定義を使用することをお勧めします。
言い換えれば、好む
#include <cstdio>
int main() {
std::printf("Hello world\n");
}
以上
#include <stdio.h>
int main() {
printf("Hello world\n");
}
C
、グローバルネームスペースへのライブラリシンボルのダンプが違法であることが義務付けられた場合、私はstd::
適格バージョンを使用することを好みます。(さらに、私は彼らがそれを違法にしたことを望みます)