【发布时间】:2019-12-16 09:28:40
【问题描述】:
我在 mac 上偶然发现了一个令人惊讶的行为。当我使用智能指针并使用苹果的 clang 编译时,即使我不包含内存头,它也会编译。 当我从终端编译或使用 IDE 时会发生这种情况。当我使用 clion 时,它不会通知我丢失的标题或任何东西。 当我尝试在 Linux 上构建时,这会导致问题,因为缺少标头。有没有办法可以强制 clion 或编译器对此更加严格?
【问题讨论】:
-
您可能包含了其他间接包含内存的内容。您无能为力,这是所有标准库的常见问题
-
但是为什么这在 linux 上不起作用呢?
-
@Picard 包含其他标准库头文件时(大多数情况下)是否包含其他标准库头文件未指定。它们是否在编译器和平台之间有所不同。没有办法确定。每次使用
std::中的某些内容时,您都需要查看 C++ 参考,例如 cppreference.com,并查找需要包含的标头,否则可能无法在不同的编译器/平台上运行。 -
感谢 cmets 和答案。我没想到 iostream 会在 mac 上包含智能指针。