Was ist der Unterschied zwischen #include
und #import
in C++?
#import
ist eine Microsoft-spezifische Sache, anscheinend nur für COM- oder .NET-Sachen.
#include
ist eine standardmäßige C/C++ - Präprozessoranweisung, mit der Headerdateien (oder gelegentlich auch andere Quellcodedateien) in Ihre Quellcodedatei aufgenommen werden.
Import in VC++: #import
Ist für Typbibliotheken oder .tlbs (COM-Zeug).
Der Inhalt der Typbibliothek wird in C++ - Klassen konvertiert, die in der Regel automatisch die COM-Schnittstellen für Sie beschreiben, und dann in Ihre Datei aufgenommen.
Die Direktive #import
Wurde von Microsoft als Erweiterung der C++ - Sprache eingeführt. Sie können darüber lesen unter dieser MSDN-Artikel .
Die Direktive #import
Wird auch mit .NET/CLI-Inhalten verwendet.
Import in gcc: Der Import in gcc unterscheidet sich vom Import in VC++. Auf einfache Weise können Sie einen Header höchstens einmal einfügen. (In VC++ und GCC können Sie dies auch einmal über #pragma
Tun.)
Die Direktive #import
Wurde vom gcc-Team in Version 3.4 offiziell nicht anerkannt und funktioniert in allen früheren Versionen von gcc, die dies unterstützen, zu 99% einwandfrei
Include: #include
Ist für die meisten Header-Dateien gedacht, aber um den Inhalt Ihrer aktuellen Datei voran zu stellen. #include
Ist Teil des C++ - Standards. Sie können darüber lesen unter dieser MSDN-Artikel .
#import
Ist insgesamt ein Lösung zum Üblichen
#ifndef ...
#define ...
#include ...
#endif
abhilfe schaffen. #import
Enthält eine Datei nur, wenn sie zuvor noch nicht enthalten war.
Es kann erwähnenswert sein, dass Apples Objective-C auch Anweisungen #import
Verwendet.
import war auch eines der Schlüsselwörter im Zusammenhang mit n2073, Module in C++ , das Daveed Vandevoorde im September dem Sprachausschuss vorschlug 2006. Ich bin kein guter Sprachfreak, um zu wissen, ob dieser Vorschlag endgültig zurückgestellt wurde oder auf die Umsetzung (Proof of Concept) durch den Autor oder eine andere Person wartet ...
Bitte beachten Sie, dass in gcc 4.1, #import
is veraltet. Wenn Sie es verwenden, erhalten Sie eine Warnung:
#import
ist eine veraltete GCC-Erweiterung