C++ #include 和 #import 区别

问题描述 投票:0回答:7

C++ 中的

#include
#import
有什么区别?

c++ visual-c++ gcc import include
7个回答
96
投票

在 VC++ 中导入:

#import
用于类型库或 .tlbs(COM 内容)。

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

#import
指令由 Microsoft 作为 C++ 语言的扩展引入。 您可以在这篇 MSDN 文章中阅读相关内容。

#import
指令也可与 .NET / CLI 一起使用。

在 gcc 中导入: gcc中的导入与VC++中的导入不同。这是一种最多仅包含一次标头的简单方法。 (在 VC++ 和 GCC 中,您也可以通过

#pragma
执行此操作)

gcc 团队在 3.4 版中正式取消了

#import
指令,并且在支持的所有以前的 gcc 版本中 99% 的时间都可以正常工作

包含:

#include
主要用于头文件,但将内容添加到当前文件中。
#include
是 C++ 标准的一部分。 您可以在这篇 MSDN 文章中阅读相关内容。


72
投票

#import
是 Microsoft 特定的东西,显然仅适用于 COM 或 .NET 东西。

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


11
投票

#import
总体来说是一个解决方案到平常

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

解决方法。

#import
仅包含以前未包含过的文件。

可能值得注意的是,Apple 的 Objective-C 也使用

#import
语句。


8
投票

这篇文章应该更新吗?

现在,由于 C++20 标准已经不存在,我们可以使用

import
语句进入范围“模块”。

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

就从代码的不同部分调用多个模块时的编译速度而言,导入语句似乎比旧的

#include
预处理器指令更快。



4
投票
请注意,在 gcc 4.1 中,

#import

 
已被弃用。 如果你使用它,你会收到警告:

#import

 是已弃用的 GCC 扩展


0
投票
C++ 导入是一种非常新的语言功能(模块),仅受 C++ 编译器支持。

理想情况下,包含和导入之间的唯一区别应该是编译时间。后者要快得多。

另请注意,如果我们谈论的是模块,那么它的导入

没有哈希前缀

© www.soinside.com 2019 - 2024. All rights reserved.