视觉C++ #include和 #import 差异
visual C++ #include and #import difference
C++中#include
和#import
有什么区别?
在VC++中导入:#import
用于类型库或.tlbs(COM的东西)。
类型库的内容被转换为C++类,主要是自动为您描述 COM 接口,然后将其包含在您的文件中。
#import
指令是由Microsoft引入的,作为C++语言的扩展。 您可以在这篇 MSDN 文章中阅读有关它的信息。
#import
指令也用于.NET/CLI的东西。
在海湾合作委员会中导入:gcc 中的导入与 VC++ 中的导入不同。这是一种最多只包含一次标头的简单方法。 (在VC++和GCC中,您也可以通过#pragma
执行此操作一次)
#import
指令在 3.4 版中被 gcc 团队正式弃用,并且在所有支持
包括:#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
就从代码的不同部分调用多个模块时的编译速度而言,import 语句似乎比旧的 #include
preprocesor 指令更快。
导入也是与 n2073 相关的关键字之一,C++ 中的模块,由 Daveed Vandevoorde 于 2006 年 9 月向语言委员会提出。我没有足够的语言极客知道该提案是否被最终搁置,或者它是否正在等待作者或其他人的实现(概念证明)......
请注意,在 gcc 4.1 中,#import
已被弃用。 如果你使用它,你会得到警告:
#import
是一个已弃用的 GCC 扩展
- 将两个数组中的差异记录在第三个数组中
- 大小相等但成员数量不同的结构之间的性能差异
- C++constexpr实现差异
- 旧版c++中结构和类之间的差异
- 共享指针和具有自定义删除程序的唯一指针之间的语法差异背后的任何原因
- 节点 *temp; 和节点 *tmp = 新节点之间的差异
- GCC 和 Clang 代码性能的巨大差异
- 类内部和外部静态 constexpr 元组之间的差异
- 平凡类型与非平凡类型的复制消除差异
- 了解算法的性能差异(如果以不同的编程语言实现)
- 以天C++为单位的两个时间戳之间的差异
- 如何以毫秒为单位获取开始时间和 now() 之间的毫秒差异(以 C++为单位?
- 方括号 [] 和括号 () 之间的犰狳库差异
- 不同语言中的模运算符差异
- std::filesystem 和 std::experimental::filesystem 之间的路径差异
- C++语法差异:二维和一维数组(指针算术)
- 获取 2 个数字之间的差异百分比
- AVX 指令中寄存器和指针之间的客观差异
- 基于范围的 for 循环range_declaration中各种说明符之间的性能差异
- 视觉C++ #include和 #import 差异