C ++ include e differenza di importazione
-
05-07-2019 - |
Domanda
Qual è la differenza tra #include
e #import
in C ++?
Soluzione
#import
è una cosa specifica di Microsoft, apparentemente solo per roba COM o .NET.
#include
è un'istruzione preprocessore standard C / C ++, utilizzata per includere i file header (o occasionalmente altri codici sorgente) nel file dei codici sorgente.
Altri suggerimenti
Importa in VC ++: #import
è per le librerie dei tipi o .tlbs (roba COM).
Il contenuto della libreria dei tipi viene convertito in classi C ++, descrivendo principalmente le interfacce COM per te automaticamente, quindi viene incluso nel tuo file.
La direttiva #import
è stata introdotta da Microsoft come estensione del linguaggio C ++. Puoi leggerlo a questo articolo MSDN .
La direttiva #import
è usata anche con roba .NET / CLI.
Importa in gcc:
L'importazione in gcc è diversa dall'importazione in VC ++. È un modo semplice per includere un'intestazione al massimo una sola volta. (In VC ++ e GCC puoi farlo anche tramite #pragma
)
La direttiva #import
era ufficialmente non approvata dal team gcc nella versione 3.4 e funziona bene il 99% delle volte in tutte le versioni precedenti di gcc che supportano
Includi: #include
è per lo più file di intestazione, ma per anteporre il contenuto al file corrente. #include
fa parte dello standard C ++. Puoi leggerlo a questo articolo MSDN .
#import
è nel complesso una soluzione al solito
#ifndef ...
#define ...
#include ...
#endif
work-around. #import
include un file solo se non è stato incluso in precedenza.
Potrebbe valere la pena notare che l'Obiettivo-C di Apple utilizza anche le istruzioni #import
.
import era anche una delle parole chiave associate a n2073, Moduli in C ++ , proposti al comitato linguistico da Daveed Vandevoorde nel settembre 2006. Non sono abbastanza un fanatico della lingua per sapere se quella proposta è stata definitivamente accantonata o se è in attesa di un'implementazione (proof of concept) dell'autore o di qualcun altro ...
Nota che in gcc 4.1, #import
è deprecato. Se lo usi, riceverai un avviso:
#import
è un'estensione GCC obsoleta