”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 为什么在 C++ 中包含“cstdio”时,“printf”可以在没有“std::”的情况下工作?

为什么在 C++ 中包含“cstdio”时,“printf”可以在没有“std::”的情况下工作?

发布于2024-11-17
浏览:455

 Why Does `printf` Work Without `std::` in C   When `cstdio` is Included?

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 和全局命名空间中,具体取决于具体情况正在使用的标头和编译器的实现。但是,并不总是保证两个命名空间将包含相同的符号。

最新教程 更多>
  • 大批
    大批
    方法是可以在对象上调用的 fns 数组是对象,因此它们在 JS 中也有方法。 slice(begin):将数组的一部分提取到新数组中,而不改变原始数组。 let arr = ['a','b','c','d','e']; // Usecase: Extract till index p...
    编程 发布于2024-11-17
  • 为什么 Python 会抛出“ValueError:尝试相对导入超出顶级包”错误,以及如何避免?
    为什么 Python 会抛出“ValueError:尝试相对导入超出顶级包”错误,以及如何避免?
    顶级包之外的相对导入在多级 Python 包中尝试相对导入时,从包目录运行模块可能会导致“ValueError:尝试相对导入超出顶级包”错误。了解此错误背后的原因对于有效的包管理至关重要。发生该错误的原因是 Python 不维护包加载位置的记录。以“python -m test_A.test”执行模...
    编程 发布于2024-11-17
  • 如何在 Java 中创建二维数组的真实副本而不产生意想不到的后果?
    如何在 Java 中创建二维数组的真实副本而不产生意想不到的后果?
    在 Java 中有效复制二维数组使用二维数组时,通常需要创建原始数组以保留其原始值。然而,像old = current这样的直接赋值可能会导致意想不到的后果。理解Java数组赋值在Java中,数组是对象,数组之间的赋值是引用到同一个底层数组。因此,更新一个数组会影响另一个数组,因为它们都指向相同的数...
    编程 发布于2024-11-17
  • 如何从两个键和值数组创建 JavaScript 对象?
    如何从两个键和值数组创建 JavaScript 对象?
    从键和值数组构造一个对象你有两个数组,newParamArr和paramVal,你的目标是创建一个JavaScript对象将这些数组中的元素配对。对象中的每个键都应该对应 newParamArr 中的一个元素,并且关联的值应该来自 paramVal。例如,如果 newParamArr 包含 [&qu...
    编程 发布于2024-11-17
  • 如何增加 MySQL 中 VARCHAR 列的大小?
    如何增加 MySQL 中 VARCHAR 列的大小?
    修改 MySQL 表中的列大小您可能会遇到类似于问题中描述的情况,您错误地设置了表列的大小不合适。在本例中,用户定义了长度为 300 的 VARCHAR 列,而不是最大长度 65353。使用 MySQL 的 ALTER TABLE 语句可以轻松解决此问题。ALTER TABLE 语句允许您修改现有表...
    编程 发布于2024-11-17
  • 如何在生产环境中将本地 MySQL 数据库连接到容器化应用程序?
    如何在生产环境中将本地 MySQL 数据库连接到容器化应用程序?
    用于本地生产部署的 Docker 数据库连接选项在生产环境中,您可能更喜欢使用本地托管的 MySQL 数据库,而不是容器化数据库。如果您的 Docker-compose.yml 设置镜像了上面提供的,您可以无缝连接到本地数据库。使用 Docker 连接到本地 MySQL 数据库连接您的本地 MySQ...
    编程 发布于2024-11-17
  • 利用 Python 实现数据输入自动化:开发人员指南
    利用 Python 实现数据输入自动化:开发人员指南
    数据输入虽然通常被认为是平凡的,但对于维护业务记录至关重要。但在自动化时代,开发人员可以在改变公司处理大量数据的方式方面发挥关键作用。 Python 拥有庞大的库生态系统,提供了强大的工具来自动执行数据输入任务,减少人为错误并提高效率。 为什么使用 Python 自动输入数据? Py...
    编程 发布于2024-11-17
  • 如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 查找今天生日的用户?
    如何使用 MySQL 识别今天生日的用户使用 MySQL 确定今天是否是用户的生日涉及查找生日匹配的所有行今天的日期。这可以通过一个简单的 MySQL 查询来实现,该查询将存储为 UNIX 时间戳的生日与今天的日期进行比较。以下 SQL 查询将获取今天有生日的所有用户: FROM USERS ...
    编程 发布于2024-11-17
  • 如何使用 CSS 创建带边框的透明三角形?
    如何使用 CSS 创建带边框的透明三角形?
    使用 CSS 制作带边框的透明三角形用 CSS 创建复杂的形状可能具有挑战性,但是对于三角形,有多种方法可以实现您想要的效果效果。您已经尝试过的一种方法涉及利用边框。虽然这种技术有效,但它依赖于视觉技巧。有没有更优雅的解决方案?是的,有! Webkit 独有的方法涉及利用 Unicode 字符 U ...
    编程 发布于2024-11-17
  • 如何在不加表锁的情况下在大型MySQL生产表上创建索引?
    如何在不加表锁的情况下在大型MySQL生产表上创建索引?
    如何在不加表锁的情况下在大型MySQL生产表上创建索引问题背景: 在大型 MySQL 表上创建索引可能是一项艰巨的任务,尤其是在不间断访问至关重要的生产环境中。传统的 CREATE INDEX 语句可能会导致完全表锁定,从而阻塞所有并发操作。MySQL 版本注意事项:在 MySQL 5.6 及更高版...
    编程 发布于2024-11-17
  • 使用express-fast-json-stringify 增强 Express.js 中的 JSON 序列化性能
    使用express-fast-json-stringify 增强 Express.js 中的 JSON 序列化性能
    JSON 序列化是 Web 开发中的一项关键任务,特别是对于使用 Node.js 和 Express.js 构建的应用程序。虽然 Node.js 中的原生 JSON 序列化 (JSON.stringify()) 简单且方便,但它可能成为性能瓶颈,尤其是在重负载下。本文介绍了express-fast-...
    编程 发布于2024-11-17
  • 为什么 Go 的 `encoding/csv` 包向 CSV 文件中的引用字符串添加额外的引号?
    为什么 Go 的 `encoding/csv` 包向 CSV 文件中的引用字符串添加额外的引号?
    对 Go 中引用字符串的特殊 CSV 结果进行故障排除 Encoding/CSVGo 中的encoding/csv 包一直是有关处理引用字符串的很多争论的主题在 CSV 文件中。本文旨在通过探索用户在将带引号的字符串写入 CSV 文件时遇到额外引号所观察到的有趣现象来阐明该问题。额外引号之谜用户提供...
    编程 发布于2024-11-17
  • 除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    除了“if”语句之外:还有哪些地方可以在不进行强制转换的情况下使用具有显式“bool”转换的类型?
    无需强制转换即可上下文转换为 bool您的类定义了对 bool 的显式转换,使您能够在条件语句中直接使用其实例“t”。然而,这种显式转换提出了一个问题:“t”在哪里可以在不进行强制转换的情况下用作 bool?上下文转换场景C 标准指定了四种值可以根据上下文转换为 bool 的主要场景:语句:if、w...
    编程 发布于2024-11-17
  • 如何使用 Unicode 来显示具有“far”和“fas”类的 Font Awesome 5 星图标?
    如何使用 Unicode 来显示具有“far”和“fas”类的 Font Awesome 5 星图标?
    Font Awesome 5 星图标的 Unicode:使用“far”和“fas”类Font Awesome 5 提供常规和实体星形图标,两者均由 Unicode 值“\f005”表示。要在评级系统中利用这些变化,您可以利用 CSS 在“far”和“fas”类之间切换。“fas”类代表实心星星,而“...
    编程 发布于2024-11-17
  • 在 Go 中使用 WebSocket 进行实时通信
    在 Go 中使用 WebSocket 进行实时通信
    构建需要实时更新的应用程序(例如聊天应用程序、实时通知或协作工具)需要一种比传统 HTTP 更快、更具交互性的通信方法。这就是 WebSockets 发挥作用的地方!今天,我们将探讨如何在 Go 中使用 WebSocket,以便您可以向应用程序添加实时功能。 在这篇文章中,我们将介绍: WebSoc...
    编程 发布于2024-11-17

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

Copyright© 2022 湘ICP备2022001581号-3