web-dev-qa-db-ja.com

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

違いは何ですか #includeおよび#import C++で?

89
Marius

#importはMicrosoft固有のもので、明らかにCOMまたは.NETのもの専用です。

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

57
Head Geek

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

タイプライブラリのコンテンツは、ほとんどの場合自動的にCOMインターフェイスを記述するC++クラスに変換され、ファイルに含まれます。

#importディレクティブは、C++言語の拡張機能としてMicrosoftによって導入されました。 このMSDN記事 でそれについて読むことができます。

#importディレクティブは、.NET/CLIのものでも使用されます。

gccでのインポート:gccでのインポートはVC++でのインポートとは異なります。これは、ヘッダーを1回だけ含める簡単な方法です。 (VC++およびGCCでは、#pragma一度も)

#importディレクティブは、バージョン3.4でgccチームによって公式に廃止されておらず、サポートするgccのすべての以前のバージョンで99%の時間で正常に動作します

含む:#includeは主にヘッダーファイル用ですが、コンテンツを現在のファイルの先頭に追加します。 #includeはC++標準の一部です。 このMSDN記事 でそれについて読むことができます。

73
Brian R. Bondy

#importは全体的にソリューション通常

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

回避策。 #importには、以前に含まれていなかった場合にのみファイルが含まれます。

AppleのObjective-Cも#importステートメントを使用していることに注意してください。

8
thatha

importは、9月にDaveed Vandevoordeによって言語委員会に提案された n2073、C++のモジュール に関連付けられたキーワードの1つでもありました2006.私は、その提案が決定的に棚上げにされたのか、それとも作者や他の人からの実装(概念実証)を待っているのかを知るのに十分な言語マニアではありません...

4
Don Wakefield

Gcc 4.1では、#importis非推奨です。それを使用すると、警告が表示されます:

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

3
Mike Godin