xsk*_*xzr 14 c c++ c++-standard-library
我只能在标准草案N4582中找到
[res.on.headers/1] C++标头可能包含其他C++标头.
似乎没有指定C++标头是否可以包含C标准标头.
如果允许,即使不包含此标头,使用C标准头中定义的全局名称是否不安全(因为程序可能通过某些C++标准头隐式包含头)?
对于您跟进的问题(名称冲突),是的,它当然可以。原因是 C++ 标准库包含<c:::>C 标准库内容的C++ 标头,并且标准明确允许这些标头也提供全局命名空间中的名称(除了在 中强制提供它们::std)。
此外,基于 C++ 标准的 Annex D [depr],C 标准库头文件(<:::.h>版本)也是 C++ 标准库的一部分(尽管已弃用)。这意味着 [res.on.headers]/1 允许 C++ 头文件包含它们。