C ++包含和导入差异

#include#import在C ++有什么区别?

#import是微软特定的东西,显然只适用于COM或.NET的东西。

#include是一个标准的C / C ++预处理器语句,用于在源代码文件中包含头文件(或偶尔的其他源代码)文件。

在VC ++中导入: #import是用于types库或.tlbs(COM东西)。

types库的内容被转换成C ++类,主要为您自动描述COM接口,然后将其包含到您的文件中。

#import指令是由Microsoft引入的,作为C ++语言的扩展。 你可以阅读这个MSDN文章 。

#import指令也用于.NET / CLI的东西。

在gcc中导入: gcc中的导入与VC ++中的导入不同。 只有一次,最多只能包含一个头部的简单方法。 (在VC ++和GCC中,你也可以通过#pragma来做到这一点)

#import指令在3.4版本中已经被gcc团队正式弃用,并且在所有以前版本的gcc中99%

包括: #include主要是用于头文件,但要将内容预先添加到当前文件中。 #include是C ++标准的一部分。 你可以阅读这个MSDN文章 。

#import是通常的解决scheme

 #ifndef ... #define ... #include ... #endif 

变通。 #import只有在以前没有包含文件时才包含文件。

值得一提的是,苹果的Objective-C也使用了#import语句。

导入也是与C ++中的n2073模块相关的关键字之一,由Daveed Vandevoorde于2006年9月提交给语言委员会。我不是一个语言怪胎,不知道这个提案是否被明确搁置,或者是否正在等待实现(概念certificate)来自作者或其他人…

请注意,在gcc 4.1中, #import 已被弃用。 如果你使用它,你会得到警告:

#import是一个不赞成的GCC扩展