这个问题在这里已经有了答案:
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/