Was ist der Unterschied zwischen #include
und #import
in C ++?
94
#import
ist eine Microsoft-spezifische Sache, anscheinend nur für COM- oder .NET-Inhalte.
#include
ist eine Standard-C / C ++ - Präprozessoranweisung, die zum Einfügen von Header- (oder gelegentlich anderen Quellcode-) Dateien in Ihre Quellcodedatei verwendet wird.
Import in VC ++:
#import
ist für Typbibliotheken oder .tlbs (COM-Zeug).Der Inhalt der Typbibliothek wird in C ++ - Klassen konvertiert, die hauptsächlich die COM-Schnittstellen für Sie automatisch beschreiben, und dann in Ihre Datei aufgenommen.
Die
#import
Richtlinie wurde von Microsoft als Erweiterung der C ++ - Sprache eingeführt. Sie können darüber in diesem MSDN-Artikel lesen .Die
#import
Direktive wird auch mit .NET / CLI-Inhalten verwendet.Import in gcc: Der Import in gcc unterscheidet sich vom Import in VC ++. Es ist eine einfache Möglichkeit, einen Header höchstens einmal einzuschließen. (In VC ++ und GCC können Sie dies auch
#pragma
einmal tun )Die
#import
Direktive wurde vom gcc-Team in Version 3.4 offiziell nicht missbilligt und funktioniert in 99% der Fälle in allen früheren Versionen von gcc, die dies unterstützen, einwandfreiInclude:
#include
dient hauptsächlich für Header-Dateien, dient jedoch dazu, den Inhalt Ihrer aktuellen Datei voranzustellen.#include
ist Teil des C ++ - Standards. Sie können darüber in diesem MSDN-Artikel lesen .quelle
#import
ist insgesamt eine Lösung für das Üblicheumgehen.
#import
Enthält eine Datei nur, wenn sie zuvor noch nicht enthalten war.Es kann erwähnenswert sein, dass Apples Objective-C auch
#import
Anweisungen verwendet.quelle
Import war auch eines der Schlüsselwörter im Zusammenhang mit n2073, Module in C ++ , das Daveed Vandevoorde im September 2006 dem Sprachkomitee vorgeschlagen hatte. Ich bin kein Sprachfreak genug, um zu wissen, ob dieser Vorschlag endgültig zurückgestellt wurde oder auf eine Implementierung wartet (Proof of Concept) vom Autor oder einer anderen Person ...
quelle
Bitte beachten Sie, dass in gcc 4.1,
#import
ist veraltet. Wenn Sie es verwenden, erhalten Sie eine Warnung:quelle