2010-01-02 54 views
8

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++)

+1

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'. –

Respuesta

13

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

+1

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. :) –

+2

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. –

+0

@baeltazor Sí, esa es la idea. – James

2

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.

+0

gracias Pavel. –

1

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.

4

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.

1

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.

0

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?)

0

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.

Cuestiones relacionadas