C ++インクルードとインポートの違い


回答:


61

#import マイクロソフト固有のものであり、明らかにCOMまたは.NETのもののみです。

#include 標準のC / C ++プリプロセッサステートメントで、ソースコードファイルにヘッダー(または場合によっては他のソースコード)ファイルを含めるために使用されます。


6
本当じゃない。#importディレクティブは、バージョン3.4のgccチームによって正式に非推奨になり、サポートする以前のすべてのバージョンのgccで99%正常に機能します
ブライアンR.ボンディ

6
... #importをサポートする
ブライアンR.ボンディ

1
気になった、私はそれを知らなかった。代わりに、COMと.NET固有のものだと言ったほうがいいでしょう。
オタクの頭

23
gccでサポートされる#importは、ヘッダーを1回だけ含めるための移植性のない方法です:< ahref= " gcc.gnu.org/onlinedocs/gcc-4.3.2/cpp/… >。これは、Microsoft COMとは完全に無関係です#インポート
fizzer

3
GCC #importは実際にはObjective-Cプリプロセッサコマンドであり、gccとclangの.cファイルで動作します(ペダンティックモードを除く)。
マイケルモリス

83

VC ++でのインポート: #importタイプライブラリまたは.tlbs(COMのもの)用です。

タイプライブラリの内容はC ++クラスに変換され、主にCOMインターフェイスが自動的に記述され、ファイルに組み込まれます。

この#importディレクティブは、C ++言語の拡張機能としてMicrosoftによって導入されました。これについては、MSDNの記事をご覧ください

#importディレクティブはまた、.NET / CLIのものと一緒に使用されます。

gccで のインポート gccでのインポートはVC ++でのインポートとは異なります。これは、ヘッダーを最大で1回だけ含める簡単な方法です。(VC ++とGCCでは、これ#pragmaも1回実行できます)

#importディレクティブは正式バージョン3.4にgccのチームによってundeprecatedとその支援のgccのすべての以前のバージョンでは細かい時間の99%を働きました

インクルード: #include主にヘッダーファイル用ですが、現在のファイルの前にコンテンツを追加します。#includeC ++標準の一部です。これについては、MSDNの記事をご覧ください


3
MSDNリンクが古くなっています。マイクロソフトに感謝します。
Mark Ransom 2018

8

#import全体的な通常の解決策です

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

回避策。#import以前にインクルードされていない場合にのみ、ファイルをインクルードします。

AppleのObjective-Cも#importステートメントを使用していることは注目に値するかもしれません。


4

importは、2006年9月にDaveed Vandevoordeによって言語委員会に提案されたn2073に関連付けられたキーワードの1つであるModules in C ++でもありました。 (概念実証)著者または他の誰かから...


Daveedは当時EDGの従業員だったので、彼らはそのように機能するコードを持っていると思います。
MSalters 2008年

1
「#include」からインポートメカニズムに移行するのは非常に良いので、必要なレッグワークが完了したと思います。しかし、私はこの機能をのぞき見することを聞いたことがあり、C ++ 0Xにはないことは確かです。たぶんいつか私が引退する前に、^)〜
ドン・ウェイクフィールド

1
私が恐れていたように、それは数年後です: C ++ 09のモジュール?
Don Wakefield、

4

GCC 4.1で、ということに注意してください#import される非推奨。これを使用すると、警告が表示されます。

#import 非推奨のGCC拡張機能です


これは質問の答えにはなりません。
SSアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.