Estoy respondiendo esto como un recordatorio, para dar un punto a mi comentario (s) sobre la respuesta "user1949346" a este mismo OP.
Entonces, como muchos ya respondieron: de cualquier manera está bien. Seguido por el énfasis de sus propias impresiones.
Introductorio, como también en los comentarios mencionados anteriormente, mi opinión es que C++
se propone que las extensiones de encabezado sean.h
si en realidad no hay ninguna razón en contra.
Dado que los documentos ISO / IEC usan esta notación de los archivos de encabezado y ni .hpp
siquiera se produce una coincidencia de cadenas en sus documentaciones de idiomas sobreC++
.
Pero ahora estoy apuntando a una razón aceptable POR QUÉ de cualquier manera está bien, y especialmente por qué no está sujeto al lenguaje en sí.
Así que, aquí vamos.
La C++
documentación (en realidad estoy tomando referencia de la versión N3690) define que un encabezado debe cumplir con la siguiente sintaxis:
2.9 Nombres de encabezado
header-name:
< h-char-sequence >
" q-char-sequence "
h-char-sequence:
h-char
h-char-sequence h-char
h-char:
any member of the source character set except new-line and >
q-char-sequence:
q-char
q-char-sequence q-char
q-char:
any member of the source character set except new-line and "
Entonces, como podemos extraer de esta parte, el nombre del archivo de encabezado también puede ser cualquier cosa que sea válida en el código fuente. Excepto que contenga '\n'
caracteres y dependiendo de si se va a incluir, <>
no está permitido que contenga a >
. O a la inversa, si está incluido por ""
-include, no está permitido contener un"
.
En otras palabras: si tenía un entorno que admitiera nombres de archivo como prettyStupidIdea.>
, incluya como:
#include "prettyStupidIdea.>"
sería válido, pero:
#include <prettyStupidIdea.>>
Sería inválido. Al revés lo mismo.
E incluso
#include <<.<>
sería un nombre de archivo de encabezado válido incluido
Incluso esto se conformaría C++
, sería una idea bastante bastante estúpida, aunque.
Y por eso también .hpp
es válido.
¡Pero no es el resultado de que los comités diseñen decisiones para el idioma!
Entonces, discutir sobre el uso .hpp
es lo mismo que hacerlo .cc
, .mm
o sobre cualquier otra cosa que lea en otras publicaciones sobre este tema.
Tengo que admitir que no tengo ni idea de dónde .hpp
vino 1 , pero apostaría a que un inventor de alguna herramienta de análisis, IDE u otra cosa relacionada C++
tuvo esta idea para optimizar algunos procesos internos o simplemente inventar algunos (probablemente incluso para ellos necesariamente ) nuevas convenciones de nomenclatura.
Pero no es parte del lenguaje.
Y cada vez que uno decide usarlo de esta manera. Que sea porque le gusta la mayor parte o porque algunas aplicaciones de flujo de trabajo lo requieren, nunca 2 es un requisito de la lengua. Entonces, quien dice "el pp es porque se usa con C ++", simplemente está equivocado con respecto a la definición de los lenguajes.
C ++ permite cualquier cosa que respete el párrafo anterior. Y si hay algo que el comité propuso usar, entonces lo está usando .h
ya que esta es la extensión demandada en todos los ejemplos del documento ISO.
Conclusión:
Mientras no vea / sienta la necesidad de usar .h
más .hpp
o viceversa, no debe molestarse. Porque ambos serían un nombre de encabezado válido de la misma calidad con respecto al estándar. Y, por lo tanto, cualquier cosa que REQUIERA que use .h
o .hpp
es una restricción adicional del estándar que incluso podría estar en contradicción con otras restricciones adicionales que no se ajustan entre sí. Pero como OP no menciona ninguna restricción de idioma adicional, esta es la única respuesta correcta y aprobable a la pregunta
" * .h o * .hpp para sus definiciones de clase " es:
Ambos son igualmente correctos y aplicables siempre que no existan restricciones externas.
1 Por lo que sé, aparentemente, es el marco de impulso que surgió con esa .hpp
extensión.
2 ¡ Por supuesto que no puedo decir qué traerán algunas versiones futuras!