视觉C++ #include和 #import 差异

visual C++ #include and #import difference

本文关键字:#import 差异 #include C++ 视觉      更新时间:2023-10-16

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

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

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

#import指令是由Microsoft引入的,作为C++语言的扩展。 您可以在这篇 MSDN 文章中阅读有关它的信息。

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

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

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

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

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

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

#import总体上是通常

的解决方案
#ifndef ...
#define ...
#include ...
#endif

解决方法。 仅当以前未包含文件时,#import才会包含该文件。

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

这篇文章应该更新吗?

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

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

就从代码的不同部分调用多个模块时的编译速度而言,import 语句似乎比旧的 #include preprocesor 指令更快。

导入也是与 n2073 相关的关键字之一,C++ 中的模块,由 Daveed Vandevoorde 于 2006 年 9 月向语言委员会提出。我没有足够的语言极客知道该提案是否被最终搁置,或者它是否正在等待作者或其他人的实现(概念证明)......

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

#import 是一个已弃用的 GCC 扩展