c++ - 为什么mac不需要包含智能指针?

标签 c++ macos clion

这个问题在这里已经有了答案:





Why does omission of "#include <string>" only sometimes cause compilation failures?

(7 个回答)


2年前关闭。




我在mac上偶然发现了一个令人惊讶的行为。当我使用智能指针并使用苹果的 clang 编译时,即使我不包含内存头,它也会编译。
当我从终端编译或使用 IDE 时会发生这种情况。当我使用 clion 时,它不会通知我丢失的标题或任何东西。
当我尝试在 Linux 上构建时,这会导致问题,因为缺少 header 。有没有办法可以强制 clion 或编译器对此更加严格?

最佳答案

这里的问题是 C++ 标准只要求适当的 #include将您想要的功能引入编译单元。这是设计使然,甚至允许编译器编写者将一些 C++ 标准库功能硬编码到编译器中!

许多 C++ 标准库实现 #include隐式引入 C++ 标准库功能的头文件。在这方面,有些人比其他人更糟糕。

除了严格使用强制的 #include 之外,您实际上无能为力。小号;您几乎可以通过反复试验来解决一些问题。

关于c++ - 为什么mac不需要包含智能指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59353757/

相关文章:

node.js - 如何在 macOS (mojave 10.14) 上优雅地停止 NodeJS 服务器监听器?

swift - Mac OS Xcode Swift 2.2 控制拖动标签和按钮到 appdelegate.swift 文件的问题

c++ - 如何在 CLion 中为文件名使用蛇形大小写和为文件名使用驼峰大小写?

c++ - 简单引用计数 : smart pointers

如果前端 Tomcat 被终止,C++ 服务器将终止。错误 "Received untrapped signal [13] - SIGPIPE"

ruby-on-rails - Ruby on Rails 的 Mac 文本编辑器

c++ - gdb 远程调试缓存远程目标

c - 在执行期间手动将 stdin 重定向到文件

c++ - 特定情况下的类析构函数

c++ - 使用步骤 c++ 构建 vector