Je réponds à ceci comme rappel, pour donner le point à mon commentaire (s) sur la réponse "user1949346" à ce même OP.
Donc, comme beaucoup l'ont déjà répondu: dans les deux cas, c'est bien. Suivi par met l'accent sur leurs propres impressions.
Introduction, comme dans les commentaires précédents, je C++
pense que les extensions d'en-tête sont proposées .h
s'il n'y a en fait aucune raison de s'y opposer.
Étant donné que les documents ISO / CEI utilisent cette notation des fichiers d'en-tête et aucune correspondance de chaîne .hpp
ne se produit même dans leurs documentations linguistiques C++
.
Mais je vise maintenant pour une raison acceptable POURQUOI l'un ou l'autre est correct, et surtout pourquoi il n'est pas sujet à la langue elle-même.
Alors c'est parti.
La C++
documentation (je prends en fait référence à la version N3690) définit qu'un en-tête doit se conformer à la syntaxe suivante:
2.9 Noms d'en-tête
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 "
Donc, comme nous pouvons l'extraire de cette partie, le nom du fichier d'en-tête peut également être tout ce qui est valide dans le code source. Sauf '\n'
s'il contient des caractères et selon qu'il doit être inclus, <>
il n'est pas autorisé à contenir a >
. Ou, dans le cas ""
contraire, s'il est inclus par -include, il n'est pas autorisé à contenir a "
.
En d'autres termes: si vous aviez un environnement supportant les noms de fichiers comme prettyStupidIdea.>
, un include comme:
#include "prettyStupidIdea.>"
serait valide, mais:
#include <prettyStupidIdea.>>
serait invalide. L'inverse est le même.
Et même
#include <<.<>
serait un nom de fichier d'en-tête inclus valide.
Même ce serait conforme C++
, ce serait une idée assez stupide, tho.
Et c'est pourquoi .hpp
est également valable.
Mais ce n'est pas le résultat des décisions des comités sur la langue!
Donc, discuter de l'utilisation .hpp
est la même chose que de le faire .cc
, .mm
ou de tout ce que j'ai lu dans d'autres articles sur ce sujet.
Je dois admettre que je ne sais pas d'où .hpp
vient 1 , mais je parierais qu'un inventeur d'un outil d'analyse, IDE ou autre chose concerné C++
est venu à cette idée pour optimiser certains processus internes ou simplement pour en inventer (probablement même pour eux nécessairement ) nouvelles conventions de dénomination.
Mais cela ne fait pas partie de la langue.
Et chaque fois que l'on décide de l'utiliser de cette façon. Que ce soit parce qu'il aime le plus ou parce que certaines applications du flux de travail l' exigent, il n'a jamais 2 est une exigence de la langue. Donc, celui qui dit "le pp est parce qu'il est utilisé avec C ++", se trompe simplement en ce qui concerne la définition des langages.
C ++ permet tout ce qui respecte le paragraphe précédent. Et s'il y a quelque chose que le comité a proposé d'utiliser, alors il l'utilise .h
puisque c'est l'extension poursuivie dans tous les exemples du document ISO.
Conclusion:
Tant que vous ne voyez / ressentez aucun besoin d'utiliser .h
plus .hpp
ou vice versa, vous ne devriez pas vous embêter. Parce que les deux formeraient un nom d'en-tête valide de même qualité par rapport à la norme. Et donc tout ce qui vous oblige à utiliser .h
ou .hpp
constitue une restriction supplémentaire de la norme qui pourrait même être en contradiction avec d'autres restrictions supplémentaires non conformes les unes aux autres. Mais comme OP ne mentionne aucune restriction de langue supplémentaire, c'est la seule réponse correcte et approuvable à la question
" * .h ou * .hpp pour vos définitions de classe " est:
Les deux sont également corrects et applicables tant qu'aucune restriction externe n'est présente.
1 D'après ce que je sais, c'est apparemment le cadre de boost qui est venu avec cette .hpp
extension.
2 Bien sûr, je ne peux pas dire ce que certaines versions futures apporteront!