2008-10-05 17 views

Respuesta

43

#import es algo específico de Microsoft, aparentemente para cosas COM o .NET solamente.

#include es una instrucción de preprocesador C/C++ estándar, que se utiliza para incluir los archivos de encabezado (u ocasionalmente otro código fuente) en su archivo de código fuente.

+3

Esto no es cierto. La directiva #import fue oficialmente ignorada por el equipo de gcc en la versión 3.4 y funciona bien el 99% del tiempo en todas las versiones anteriores de gcc compatibles con –

+5

... que admiten # import –

+1

Curioso, no era consciente de eso. Tal vez debería haber dicho que es algo específico de COM- y .NET en su lugar. –

66

Importar en VC++:#import es para librerías de tipos o .tlbs (cosas COM).

El contenido de la biblioteca de tipos se convierte en clases de C++, en su mayoría describe las interfaces COM automáticamente y luego se incluye en su archivo.

La directiva #import fue introducida por Microsoft como una extensión del lenguaje C++. Puede leer al respecto en this MSDN article.

La directiva #import también se usa con cosas de .NET/CLI.

Importación en gcc: La importación en gcc es diferente de la importación en VC++. Es una forma simple de incluir un encabezado como máximo una vez. (En VC++ y GCC puede hacerlo a través de #pragma vez también)

La directiva #import se undeprecated oficialmente por el equipo de gcc en la versión 3.4 y funciona bien el 99% del tiempo en todas las versiones anteriores de gcc que apoyan

Incluir:#include es principalmente para archivos de encabezado, pero para anteponer el contenido a su archivo actual. #include es parte del estándar C++. Puede leer sobre esto al this MSDN article.

4

importación era también una de las palabras clave asociadas con n2073, Modules in C++, propuso al Comité idioma Daveed Vandevoorde en septiembre de 2006. No soy lo suficientemente friki de un lenguaje para saber si esa propuesta fue archivado definitivamente o si está a la espera una implementación (prueba de concepto) del autor o de otra persona ...

+0

Daveed era un empleado de EDG en ese momento, por lo que esperaba que tuvieran un código tan funcional. – MSalters

+1

Espero que hayan hecho el trabajo preliminar requerido, porque sería muy bueno pasar de '#include' a un mecanismo de importación. Pero no he escuchado ni un ápice de esta función, y estoy bastante seguro de que no está en C++ 0X. Tal vez en algún momento antes de que me retire; ^) ~ –

+1

Como temía, faltan algunos años: [¿Módulos en C++ 09?] (Http://groups.google.com/group/comp.lang.c++. moderado/msg/5ce3042a8de03284? dmode = fuente) –

7

#import es en general una solución a la habitual

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

solución temporal. #import incluye un archivo solo si no se ha incluido antes.

Vale la pena señalar que el Objective-C de Apple también usa sentencias #import.

3

Tenga en cuenta que en gcc 4.1, #importes obsoleto. Si lo usa, obtendrá la advertencia:

#import es una extensión obsoleta GCC

Cuestiones relacionadas