C++ 中的
#include
和 #import
有什么区别?
在 VC++ 中导入:
#import
用于类型库或 .tlbs(COM 内容)。
类型库的内容被转换为C++类,主要是自动为您描述COM接口,然后将其包含到您的文件中。
#import
指令由 Microsoft 作为 C++ 语言的扩展引入。 您可以在这篇 MSDN 文章中阅读相关内容。
#import
指令也可与 .NET / CLI 一起使用。
在 gcc 中导入: gcc中的导入与VC++中的导入不同。这是一种最多仅包含一次标头的简单方法。 (在 VC++ 和 GCC 中,您也可以通过
#pragma
执行此操作)
gcc 团队在 3.4 版中正式取消了
#import
指令,并且在支持的所有以前的 gcc 版本中 99% 的时间都可以正常工作
包含:
#include
主要用于头文件,但将内容添加到当前文件中。 #include
是 C++ 标准的一部分。 您可以在这篇 MSDN 文章中阅读相关内容。
#import
是 Microsoft 特定的东西,显然仅适用于 COM 或 .NET 东西。
#include
是标准 C/C++ 预处理器语句,用于在源代码文件中包含头文件(或有时是其他源代码)文件。
#import
总体来说是一个解决方案到平常
#ifndef ...
#define ...
#include ...
#endif
解决方法。
#import
仅包含以前未包含过的文件。
可能值得注意的是,Apple 的 Objective-C 也使用
#import
语句。
这篇文章应该更新吗?
现在,由于 C++20 标准已经不存在,我们可以使用
import
语句进入范围“模块”。
https://en.cppreference.com/w/cpp/language/modules
就从代码的不同部分调用多个模块时的编译速度而言,导入语句似乎比旧的
#include
预处理器指令更快。
#import
已被弃用。 如果你使用它,你会收到警告:
#import
是已弃用的 GCC 扩展
理想情况下,包含和导入之间的唯一区别应该是编译时间。后者要快得多。
另请注意,如果我们谈论的是模块,那么它的导入
没有哈希前缀