104

#includeC++和C++有什么区别#import

4

6 回答 6

88

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

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

#import指令由 Microsoft 作为 C++ 语言的扩展引入。您可以在这篇 MSDN 文章中了解它。

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

gcc 中的导入:gcc 中的导入与 VC++ 中的导入不同。这是一种最多只包含一次标题的简单方法。(在 VC++ 和 GCC 中,您也可以通过#pragma一次来执行此操作)

#import指令在 3.4 版中被 gcc 团队正式弃用,并且在所有支持

包括: #include主要用于头文件,但将内容添加到当前文件中。#include是 C++ 标准的一部分。您可以在这篇 MSDN 文章中了解它。

于 2008-10-05T16:50:55.837 回答
66

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

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

于 2008-10-05T16:54:19.403 回答
9

#import总体上是对通常的解决方案

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

变通方法。#import仅在以前未包含文件时才包含该文件。

值得注意的是,Apple 的 Objective-C 也使用#import语句。

于 2009-04-07T02:43:30.023 回答
4

import也是与n2073(C++ 中的模块)相关的关键字之一,由 Daveed Vandevoorde 于 2006 年 9 月向语言委员会提出。我不是一个语言极客,无法知道该提案是否被明确搁置或是否正在等待实施(概念证明)来自作者或其他人......

于 2008-10-05T21:14:32.560 回答
4

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

#import是一个弃用的 GCC 扩展

于 2010-01-22T00:19:08.337 回答
3

这个帖子应该更新吗?

import现在,由于 C++20 标准已经不存在,我们可以使用该语句进入范围“模块” 。

https://en.cppreference.com/w/cpp/language/modules

在从代码的不同部分调用多个模块时的编译速度方面,import 语句似乎比旧的#includepreprocesor 指令更快。

于 2021-02-22T21:24:11.207 回答