为什么在Mac上不需要包含智能指针?

我偶然发现了Mac上令人惊讶的行为。当我使用智能指针并使用Apple的clang进行编译时,即使不包含内存标头,它也会进行编译。 从终端编译或使用IDE时会发生这种情况。当我使用clion时,它不会通知我缺少的标题或其他内容。 当我尝试在Linux上进行构建时,这会导致问题,因为缺少标头。有什么办法可以迫使clion或编译器对此做更严格的规定?

swansong13 回答:为什么在Mac上不需要包含智能指针?

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

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

除了严格使用授权的#include之外,您实际上无能为力。您可以通过反复尝试几乎解决的问题。

本文链接:https://www.f2er.com/2914692.html

大家都在问