Me preguntaba ¿cuál es la diferencia entre los archivos .cpp y .h? ¿Para qué usaría un archivo de encabezado (.h) y para qué usaría un archivo cpp?CPP | .h archivos (C++)
Respuesta
En general, y en realidad podría ser mucho menos general:
.h archivos (cabecera) son para las declaraciones de las cosas que se utilizan muchas veces, y son #include
d en otros archivos
archivos (aplicación) .cpp son para todo lo demás, y casi nunca son #include
d
Bien, entonces para ver si tengo este derecho; Si tengo una clase, diga InventoryClass, la pondré en un archivo .h y luego llamaré sus métodos desde un archivo .cpp. Gracias por su respuesta, también. :) –
Normalmente pondría la declaración de la clase (es decir: tengo estos campos, métodos, etc.) en el archivo de encabezado. Cada método se implementaría en el archivo cpp. –
@baeltazor Sí, esa es la idea. – James
Por convención, los archivos .h son algo que #includes. Los archivos CPP son algo que agrega a su proyecto para compilar en un archivo de objeto separado y luego pasarlo al vinculador.
gracias Pavel. –
el archivo .h se llama el archivo de cabecera. Usualmente colocas tu interfaz allí (las cosas que quieres que sean públicas). El archivo cpp es donde realmente implementa su interfaz.
Técnicamente, no hay diferencia. C++ le permite poner su código en cualquier archivo, con cualquier formato, y debería funcionar.
Por convención, usted pone sus declaraciones (básicamente, la que compone su API) en los archivos .h, y se conocen como "encabezados". Los archivos .cpp son para las "agallas" reales de su código: los detalles de la implementación.
Normalmente, tiene los archivos de encabezado incluidos con #include
por otros archivos en su proyecto (y otros proyectos, si está creando una biblioteca), por lo que el compilador puede obtener la interfaz necesaria para compilar. La implementación, en los archivos .cpp, generalmente se implementa, por lo que hay un archivo .cpp que "completa" la implementación por archivo .h.
Primero, ambos son archivos de texto que contienen código para el compilador o preprocesador de C++. En lo que respecta al sistema, no hay diferencia.
Por convención, diferentes extensiones de nombre de archivo se utilizan para indicar el contenido de los archivos. En los programas C, tiende a ver los archivos .h y .c mientras que en C++ .hpp y .cpp tienen el mismo objetivo.
El primer grupo, los archivos .h y .hpp, llamados archivos de encabezado, contienen principalmente código no ejecutable, como definiciones de constantes y prototipos de funciones. Se agregan a los programas a través de la directiva #include
y se usan no solo por el programa o la biblioteca en cuestión, sino por otros programas o bibliotecas que los utilizarán, declarando puntos de interfaz y contratos definiendo valores. También se usan para establecer metadatos que pueden cambiar al compilar para diferentes sistemas operativos.
El segundo grupo, archivos .c y .cpp, contiene las partes de ejecución del código para la biblioteca o el programa.
corrígeme si estoy equivocado, pero,
Cuando #Include algo, más o menos insertos toda incluyeron archivo en el que está con el comando incluir; es decir, cuando incluyo, diga "macros.h" en "genericTools.cpp", todo el contenido de "macros.h" se coloca en "genericTools.cpp" en ese punto. Es por eso que necesita usar cosas como "#pragma una vez" u otras protecciones, para evitar incluir el mismo archivo dos veces.
De nota, el código de plantilla debe estar completamente en el archivo que va a estar incluyendo en otros lugares.(No estoy seguro de esto: ¿se pueden omitir las especializaciones de plantillas de los archivos incluidos y se pueden vincular como una función normal?)
El archivo de implementación es nuestro programa o código actual. Cuando necesitamos usar diferentes funciones incorporadas en nuestro código, debemos incluir el archivo de encabezado que es .h
.
Estos archivos .h
contienen el código real de las funciones incorporadas que utilizamos, por lo tanto, podemos simplemente llamar a las funciones respectivas.
Por lo tanto, mientras compilamos nuestro código podemos ver más líneas compiladas de las que hemos codificado porque no solo se compila nuestro código sino también las funciones (código de) que se incluyen en los archivos .h
) también están compilados.
- 1. #include in .h o .c/.cpp?
- 2. generando automáticamente .h desde .cpp/.c
- 3. Usando G ++ para compilar múltiples archivos .cpp y .h
- 4. Usando encabezados C++ (.h) vs encabezados más implementación (.h + .cpp), ¿cuáles son las desventajas?
- 5. C++ include .h incluye .cpp con el mismo nombre también?
- 6. Generar fuente .cpp desde un archivo .h
- 7. Incluir .cpp en lugar de cabecera (.h)
- 8. ¿puedo agregar archivos .h y .cpp en un proyecto de C#?
- 9. ¿Cómo diseño mi programa C++? (¿Dónde debo poner los archivos .h y .cpp?)
- 10. ¿Por qué usar archivos .cpp si puedo tener todo mi código C++ en el archivo .h?
- 11. VS2010 Add-in cpp/h grupos de pestañas automáticas
- 12. División automática (refactor) .h en el encabezado y la implementación (h + cpp)
- 13. Visual Studio 2010 compilación de archivos .cpp como archivos .c
- 14. ¿Es una buena práctica crear siempre un .cpp para cada .h en un proyecto de C++?
- 15. Mezclar archivos Objective C, (*. M, * .mm & .c /.cpp)
- 16. Eclipse CDT: ¿atajo para cambiar entre .h y .cpp?
- 17. Generar .h y .cpp desde el archivo .ui
- 18. Si utilizo el constructor explícito, ¿necesito poner la palabra clave en ambos archivos .h y .cpp?
- 19. Prevenir los intentos de inserción de pestañas en ciertos archivos (p. Ej. * .cpp, * .h, CMakeLists.txt)
- 20. estructura en diferentes archivos .cpp
- 21. fichero Make: compilar todos los archivos .cpp a .o archivos
- 22. cmake incluyendo h archivos de otros directorios
- 23. ¿Cuál es la diferencia entre un archivo .cpp y un archivo .h?
- 24. Typedef y Struct en archivos C y H
- 25. ¿Cómo puedo crear reglas de compilación en cmake para preprocesar archivos perezosos de C++ .lzz que generan archivos .h y .cpp?
- 26. Android.mk, incluya todos los archivos cpp
- 27. Es necesario __declspec (dllexport) en los archivos cpp
- 28. Dónde colocar los bloques de comentario doxygen para una biblioteca interna - en H o en archivos CPP?
- 29. Incluir automáticamente todos los archivos .cpp/.h de una carpeta en un proyecto de vcproj en Visual Studio
- 30. Diferencia entre implementar una clase dentro de un archivo .h o en un archivo .cpp
Como sugerencia, utilice el archivo 'h' para archivos de cabecera de lenguaje C y' hpp' o 'hxx' para archivos de lenguaje C++. Un archivo fuente C++ puede incluir archivos de cabecera de lenguaje C, pero los archivos fuente C no pueden incluir archivos de cabecera C++. Por lo tanto, si el archivo de encabezado contiene declaraciones o definiciones específicas de C++, asígnele el nombre con una extensión 'hpp' o' hxx'. –