C 標準ライブラリ ヘッダー<foo.h>
を C++ に含めるための推奨される方法は、対応する C++ ヘッダーを含めること<cfoo>
です。
私の経験に基づくと、これにより、対応する C 構造の一部std
が名前空間に配置されますが、その他はグローバル スコープに配置され、場合によっては両方の場所 (つまり、std
名前空間とグローバル スコープ) に表示されます。
これは、コンパイラ (グローバル スコープでsize_t
のみインクルードするのが好きなstd
人もいれば、グローバル スコープで常にインクルードする人もいます) とコンストラクト (たとえば、assert
とを含むにも関わらず名前空間error
に表示されないように見えるもの) の両方に依存します。std
cassert
cerrno
std
標準には何が必要ですか? また、名前空間内または名前空間外の場所に関連して、C コンストラクトに移植可能にアクセスするための簡単な規則はありますusing namespace std
か?
この質問は同じ根拠をカバーしていますが、そこにある答えはすでにcfoo
すべてを入れている私の理解を反映していますstd
- しかし、なぜそのようなものが表示されないassert
のか、そして類似の完全なリストを知る方法についての質問には答えていません「例外」。errno
std