Ich beantworte dies als Erinnerung, um auf meine Kommentare zu "user1949346" zu verweisen, die auf dasselbe OP antworten.
So viele haben bereits geantwortet: So oder so ist es in Ordnung. Gefolgt von Hervorhebungen ihrer eigenen Eindrücke.
Einleitend, wie auch in den zuvor genannten Kommentaren angegeben, ist meine Meinung, dass C++
Header-Erweiterungen vorgeschlagen werden, .h
wenn es tatsächlich keinen Grund dagegen gibt.
Da die ISO / IEC-Dokumente diese Notation von Header-Dateien verwenden und .hpp
in ihren Sprachdokumentationen über überhaupt keine Zeichenfolgenübereinstimmung mit auftritt C++
.
Aber ich strebe jetzt einen akzeptablen Grund an, WARUM so oder so in Ordnung ist und insbesondere, warum es nicht Gegenstand der Sprache selbst ist.
Auf geht's.
Die C++
Dokumentation (ich beziehe mich tatsächlich auf die Version N3690) definiert, dass ein Header der folgenden Syntax entsprechen muss:
2.9 Headernamen
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 "
Wie wir aus diesem Teil extrahieren können, kann der Name der Header-Datei auch alles sein, was im Quellcode gültig ist. Außer '\n'
Zeichen zu enthalten und je nachdem, ob es von eingeschlossen werden <>
soll, darf es kein enthalten >
. Oder umgekehrt, wenn es durch ""
-include eingeschlossen ist, darf es kein a enthalten "
.
Mit anderen Worten: Wenn Sie eine Umgebung hatten, die Dateinamen wie unterstützt prettyStupidIdea.>
, ein Include wie:
#include "prettyStupidIdea.>"
wäre gültig, aber:
#include <prettyStupidIdea.>>
wäre ungültig. Umgekehrt das Gleiche.
Und selbst
#include <<.<>
wäre ein gültiger inklusive Header-Dateiname.
Sogar das würde passen C++
, es wäre eine ziemlich dumme Idee, tho.
Und deshalb .hpp
gilt auch.
Aber es ist kein Ergebnis der Komitees, die Entscheidungen für die Sprache entwerfen!
So etwa zur Nutzung der Diskussion .hpp
ist so , wie es zu tun .cc
, .mm
oder was auch immer , was ich in anderen Beiträgen zu diesem Thema lesen.
Ich habe ich keine Ahnung , zugeben, wo .hpp
herkommt 1 , aber ich würde ein Erfinder einiger Parsing - Tool, IDE oder etwas anderes mit betroffenen Wette C++
kam auf diese Idee , einige interne Prozesse zu optimieren oder einfach nur unbedingt für sie einige (wahrscheinlich sogar erfinden ) neue Namenskonventionen.
Aber es ist nicht Teil der Sprache.
Und wann immer man sich entscheidet, es so zu benutzen. Möge es sein, weil er es am meisten mag oder weil einige Anwendungen des Workflows es erfordern, es ist nie 2 eine Anforderung der Sprache. Wer also sagt "das pp ist, weil es mit C ++ verwendet wird", ist einfach falsch in Bezug auf die Sprachdefinition.
C ++ erlaubt alles, was den vorherigen Absatz respektiert. Und wenn es etwas gibt, das das Komitee verwenden möchte, dann verwendet es es, .h
da dies die Erweiterung ist, die in allen Beispielen des ISO-Dokuments verklagt wird.
Fazit:
Solange Sie keine Notwendigkeit sehen / fühlen, .h
Over .hpp
oder umgekehrt zu verwenden, sollten Sie sich nicht darum kümmern. Weil beide einen gültigen Headernamen gleicher Qualität in Bezug auf den Standard bilden würden. Und daher ist alles, was Sie verwenden müssen .h
oder .hpp
eine zusätzliche Einschränkung des Standards darstellt, die sogar anderen zusätzlichen Einschränkungen widersprechen könnte, die nicht miteinander übereinstimmen. Da OP jedoch keine zusätzlichen Spracheinschränkungen erwähnt, ist dies die einzig richtige und akzeptable Antwort auf die Frage
" * .h oder * .hpp für Ihre Klassendefinitionen " lautet:
Beide sind gleichermaßen korrekt und anwendbar, solange keine externen Einschränkungen vorliegen.
1 Soweit ich weiß, ist es anscheinend das Boost-Framework, das diese .hpp
Erweiterung entwickelt hat.
2 Natürlich kann ich nicht sagen, was einige zukünftige Versionen mit sich bringen werden!