2

C 標準ライブラリ ヘッダー<foo.h>を C++ に含めるための推奨される方法は、対応する C++ ヘッダーを含めること<cfoo>です。

私の経験に基づくと、これにより、対応する C 構造の一部stdが名前空間に配置されますが、その他はグローバル スコープに配置され、場合によっては両方の場所 (つまり、std名前空間とグローバル スコープ) に表示されます。

これは、コンパイラ (グローバル スコープでsize_tのみインクルードするのが好きなstd人もいれば、グローバル スコープで常にインクルードする人もいます) とコンストラクト (たとえば、assertとを含むにも関わらず名前空間errorに表示されないように見えるもの) の両方に依存します。stdcassertcerrno

std標準には何が必要ですか? また、名前空間内または名前空間外の場所に関連して、C コンストラクトに移植可能にアクセスするための簡単な規則はありますusing namespace stdか?

この質問は同じ根拠をカバーしていますが、そこにある答えはすでにcfooすべてを入れている私の理解を反映していますstd- しかし、なぜそのようなものが表示されないassertのか、そして類似の完全なリストを知る方法についての質問には答えていません「例外」。errnostd

4

1 に答える 1