cstdio stdio.h 命名空间
cstdio 的 C 参考声明“库的每个元素都在 std 命名空间内定义”。然而,您发现 std::printf 和 printf 都可以工作,这就提出了 C 标头是否在两个命名空间中都包含符号的问题。
答案更加细致。
包括 cstdio
包括 cstdio 将符号导入 std 命名空间,并可能导入全局命名空间。这是因为 cstdio 包含 stdio.h,这是一个 C 风格的标头。
包含 stdio.h
包含 stdio.h 将符号导入全局命名空间,并且可能进入 std 命名空间。这是因为 stdio.h 是 C 风格标头。
兼容性功能
在 C 中使用 C 风格标头是一种兼容性功能。 C 11 标准规定,为了与 C 标准库兼容,C 标准库提供了 25 个 C 头文件,包括 cstdio 和 stdio.h。
该标准进一步规定,每个 C 头文件“行为就像每个名称通过相应的 cname 头放置在标准库命名空间中 放置在全局命名空间内scope."
结论
总之,当在 C 中包含 C 样式标头时,符号可能会导入到 std 和全局命名空间中,具体取决于具体情况正在使用的标头和编译器的实现。但是,并不总是保证两个命名空间将包含相同的符号。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3