Jaka jest różnica między #include
iw #import
C ++?
98
#import
jest rzeczą specyficzną dla Microsoftu, najwyraźniej tylko dla rzeczy COM lub .NET.
#include
jest standardową instrukcją preprocesora C / C ++, używaną do dołączania plików nagłówkowych (lub czasami innego kodu źródłowego) do pliku kodu źródłowego.
Import w VC ++:
#import
dotyczy bibliotek typów lub .tlbs (rzeczy COM).Zawartość biblioteki typów jest konwertowana na klasy C ++, głównie automatycznie opisujące interfejsy COM, a następnie jest dołączana do pliku.
#import
Dyrektywa została wprowadzona przez Microsoft jako rozszerzenie języka C ++. Możesz o tym przeczytać w tym artykule MSDN .#import
Dyrektywa stosuje się również z .NET / CLI rzeczy.Import w gcc: Import w gcc różni się od importu w VC ++. Jest to prosty sposób na umieszczenie nagłówka najwyżej raz. (W VC ++ i GCC możesz to zrobić również
#pragma
raz)#import
Dyrektywa została oficjalnie undeprecated przez zespół gcc w wersji 3.4 i działa dobrze 99% czasu we wszystkich poprzednich wersjach gcc, które wspierająUwzględnij:
#include
dotyczy głównie plików nagłówkowych, ale służy do dołączania zawartości do bieżącego pliku.#include
jest częścią standardu C ++. Możesz o tym przeczytać w tym artykule MSDN .źródło
#import
jest ogólnie rozwiązaniem zwykłego#ifndef ... #define ... #include ... #endif
obejść.
#import
zawiera plik tylko wtedy, gdy nie był dołączany wcześniej.Warto zauważyć, że Objective-C firmy Apple również używa
#import
oświadczeń.źródło
import był również jednym ze słów kluczowych związanych z n2073, Moduły w C ++ , zaproponowanym komitetowi językowemu przez Daveeda Vandevoorde'a we wrześniu 2006 roku. Nie jestem na tyle maniakiem językowym, by wiedzieć, czy ta propozycja została ostatecznie odłożona na półkę, czy też oczekuje na wdrożenie (dowód koncepcji) od autora lub kogoś innego ...
źródło
Zauważ, że w gcc 4.1
#import
jest przestarzałe. Jeśli go użyjesz, otrzymasz ostrzeżenie:źródło