在 C++ 中包含 C 标准库头文件的推荐方法<foo.h>
是包含相应的 C++ 头文件<cfoo>
。
根据我的经验,这会将一些相应的 C 构造放入std
命名空间中,但其他一些在全局范围内,有时它们会出现在两个地方(即,在std
命名空间和全局范围内)。
它取决于编译器(有些人喜欢size_t
只包含std
在全局范围内而不是在全局范围内,其他人总是在全局范围内包含它)和构造(例如,尽管包含and ,但既不assert
也不error
似乎出现在命名空间中)。std
cassert
cerrno
标准的要求是什么,是否有任何简单的规则来可移植地访问与std
命名空间内外的位置相关的 C 构造(比 更好using namespace std
)?
这个问题cfoo
涵盖了相同的领域,但那里的答案已经反映了我对所有内容的理解std
- 但没有回答为什么在这种情况下喜欢assert
和errno
不出现的问题std
,以及如何知道类似的完整列表“例外”。