”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么在 C++ 中使用 `` 时,`printf` 在 `std::printf` 和 `printf` 中都可以工作?

为什么在 C++ 中使用 `` 时,`printf` 在 `std::printf` 和 `printf` 中都可以工作?

发布于2024-12-21
浏览:746

Why does `printf` work in both `std::printf` and `printf` when using `` in C  ?

cstdio Stdio.h 命名空间

的 C 参考文档中,它声称所有库元素都驻留在 std 命名空间内。然而,实验表明 std::printf 和 printf 函数调用都可以工作。这是否表明 C 头文件将符号名称导入到 std 和全局命名空间中?

答案

包括 将符号名称导入到 std 命名空间中,并且可能全局命名空间。相反,包含 将符号名称导入到全局命名空间中,也可能将它们合并到 std 命名空间中。

此行为扩展到所有 C 样式标头。根据 C 11 标准(附录 D),C 标准库头的行为如下:

"2 每个 C 头,每个头都有一个 name.h 形式的名称,其行为就好像每个名称都放置在在标准库命名空间中通过相应的 cname 头放置在全局命名空间范围内。”

因此,仍然不确定这些名称是否最初在命名空间 std 中声明或定义,然后通过注入到全局命名空间中using-声明,反之亦然。

最新教程 更多>

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3