¿Cuál es la diferencia entre #include
y #import
en C++?C++ incluir e importar la diferencia
Respuesta
#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.
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.
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 ...
Daveed era un empleado de EDG en ese momento, por lo que esperaba que tuvieran un código tan funcional. – MSalters
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; ^) ~ –
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) –
#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
.
Tenga en cuenta que en gcc 4.1, #import
es obsoleto. Si lo usa, obtendrá la advertencia:
#import
es una extensión obsoleta GCC
- 1. ¿Cuál es la diferencia entre import java.util. *; e importar java.util.Date; ?
- 2. Yii importar o incluir
- 3. Cacao: ¿Cuál es la diferencia entre importar en el encabezado e importar en el archivo principal?
- 4. Diferencia entre "importar lib.foo" e "importar lib.foo como f" en Python
- 5. rails seleccionar e incluir
- 6. Diferencia entre C# usando e importación de Java
- 7. Cómo importar/incluir archivos fuente en JavaScript?
- 8. ¿Diferencia entre long e int en C#?
- 9. ¿Por qué se necesitan importar el registro e importar logging.config?
- 10. Tokenizar una cadena e incluir delimitadores en C++
- 11. Clases de plantillas e incluir protecciones en C++
- 12. ¿Cuál es la diferencia entre size_t e int en C++?
- 13. ¿Cuál es la diferencia entre doLayout e incluir en una plantilla en 'Java Play!'?
- 14. ¿Cómo importar/incluir en la hoja de estilo de cierre?
- 15. Pasos para exportar e importar en Liferay
- 16. Pythonanywhere instalar e importar el nuevo módulo
- 17. ¿Hay alguna diferencia entre ANSI C e ISO C?
- 18. Cuál es la diferencia entre Add-PsSnapIn e Import-Module
- 19. Unirse e incluir en Entity Framework
- 20. Eclipse C/C++ (CDT) importar archivos en proyecto - archivo de encabezado no encontrado - incluir ruta
- 21. Constantes e Incluir archivos en TSQL
- 22. ¿Por qué hay una diferencia en "importar" frente a "importar *"?
- 23. ¿La diferencia entre sys.stdout.write e print?
- 24. Localización e internacionalización, ¿cuál es la diferencia?
- 25. Diferencia entre default-initialize e value-initialize en C++ 03?
- 26. diferencia entre SDK e IDE
- 27. ¿No debería "importar foo. *" También incluir el subpaquete "foo.bar. *"?
- 28. ¿Es posible incluir/importar código al Manifiesto de Android?
- 29. Diferencia entre initWithNibName e initWithCoder
- 30. ¿Diferencia entre void main e int main?
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 –
... que admiten # import –
Curioso, no era consciente de eso. Tal vez debería haber dicho que es algo específico de COM- y .NET en su lugar. –