#include
和#import
在C++中有什么区别?
在VC++中的导入: #import
用于类型库或.tlb(COM组件)。
类型库的内容会自动转换为C++类,大部分自动描述了COM接口,然后被包含到你的文件中。
#import
指令是微软作为C++语言扩展引入的。你可以在MSDN文章中了解它。
#import
指令也与.NET / CLI相关。
在gcc中的导入: gcc中的导入与VC++中的导入不同。它是一种简单的方式,只能将头文件包含一次。(在VC++和GCC中,您也可以通过#pragma
once完成这项工作)
#import
指令在3.4版本中由gcc团队正式取消弃用,并且在所有支持它的以前版本的gcc中99%的时间内都可以正常工作。
包含: #include
主要用于头文件,但可以将其内容预先附加到当前文件中。#include
是C++标准的一部分。你可以在MSDN文章中了解它。
#import
是一个仅适用于 COM 或 .NET 技术的 Microsoft 特有语句。
#include
是标准的 C/C++ 预处理器语句,用于在源代码文件中包含头文件(或偶尔其他源代码文件)。
#import
是通常情况下的一个解决方案
#ifndef ...
#define ...
#include ...
#endif
这是一个解决方法。 #import
语句只会在之前未包含过该文件的情况下才会包含它。
值得注意的是,苹果的Objective-C也使用了 #import
语句。
这篇文章需要更新吗?
现在,由于C++20标准已发布,我们可以使用import
语句进入“模块”范畴。
https://zh.cppreference.com/w/cpp/language/modules
在多个模块从代码的不同部分调用时编译速度方面,import
语句似乎比旧的#include
预处理器指令更快。
#import
和import
。这个问题涉及到MS #import
语句,特别是与标签中的visual-c++
相关。import
关键字是一个相对较新的概念,在提出这个问题时它并不存在(在标准中)。 - cjds#include
和 import
的人都会在第一时间找到这个问题,因此它是相关的,因为搜索引擎的限制。 - Louis Go#import
已经被弃用。如果您使用它,会收到以下警告:
#import
是一个被弃用的GCC扩展
import也是n2073,C++中的模块之一关键字,该提议由Daveed Vandevoorde于2006年9月提交给语言委员会。我不太了解语言方面的知识,不知道这个提议是否被彻底搁置或者是否正在等待作者或其他人的实现(概念证明)...
#import
与C++20的import
不同。 - Louis Go