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扩展