我偶然发现了Mac上令人惊讶的行为。当我使用智能指针并使用Apple的clang进行编译时,即使不包含内存标头,它也会进行编译。从终端编译或使用IDE时会发生这种情况。当我使用clion时,它不会通知我缺少的标题或其他内容。当我尝试在Linux上进行构建时,这会导致问题,因为缺少标头。有没有办法我可以强制clion或编译器对此做更严格的规定?
这里的问题是C ++标准仅要求适当#include
的功能将所需的功能引入编译单元。这是设计使然,甚至允许编译器编写者将一些C ++标准库功能硬编码到编译器中!
许多C ++标准库实现#include
标头隐式引入了C ++标准库功能。在这方面,有些人比其他人差。
除了严格使用授权的#include
s之外,您实际上无能为力。您可以通过反复尝试几乎解决的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句