Sto rispondendo a questo come promemoria, per dare punto ai miei commenti sulla risposta "user1949346" a questo stesso PO.
Quindi, come molti hanno già risposto: in entrambi i casi va bene. Seguito da enfasi delle proprie impressioni.
Come introduttivo, come anche nei precedenti commenti citati, la mia opinione è che le C++estensioni di intestazione vengano proposte .hse in realtà non vi è alcuna ragione contro di esso.
Dal momento che i documenti ISO / IEC utilizzano questa notazione di file header e nessuna corrispondenza di stringa si .hppverifica nemmeno nelle loro documentazioni linguistiche C++.
Ma ora sto cercando un motivo accettabile PERCHÉ in entrambi i casi è ok, e soprattutto perché non è soggetto del linguaggio stesso.
Quindi eccoci.
La C++documentazione (in realtà sto prendendo riferimento alla versione N3690) definisce che un'intestazione deve essere conforme alla seguente sintassi:
2.9 Nomi delle intestazioni
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 "
Quindi, come possiamo estrarre da questa parte, anche il nome del file di intestazione può essere qualsiasi cosa sia valida nel codice sorgente. Tranne il contenere '\n'caratteri e in base al fatto che debba essere incluso da <>esso non è consentito contenere un >. O viceversa se è incluso da ""-include non è consentito contenere a ".
In altre parole: se hai un ambiente che supporta nomi di file come prettyStupidIdea.>, includi come:
#include "prettyStupidIdea.>"
sarebbe valido, ma:
#include <prettyStupidIdea.>>
sarebbe invalido. Il contrario è lo stesso.
E persino
#include <<.<>
sarebbe un nome file di intestazione includibile valido.
Anche se ciò si conformasse C++, sarebbe comunque un'idea piuttosto stupida.
Ed è anche per questo che .hppè valido.
Ma non è un risultato dei comitati che progettano le decisioni per la lingua!
Discutere sull'uso .hppè lo stesso di farlo .cc, .mmo di qualsiasi altra cosa abbia letto in altri post su questo argomento.
Devo ammettere che non ho idea di dove sia .hpparrivato 1 , ma scommetterei che un inventore di alcuni strumenti di analisi, IDE o qualcos'altro che mi riguarda è C++venuto a questa idea per ottimizzare alcuni processi interni o semplicemente per inventarne alcuni (probabilmente anche per loro necessariamente ) nuove convenzioni di denominazione.
Ma non fa parte della lingua.
E ogni volta che si decide di usarlo in questo modo. Sia perché gli piace la maggior parte o perché alcune applicazioni del flusso di lavoro lo richiedono, non è mai 2 è un requisito della lingua. Quindi chiunque dice "la pp è perché è usata con C ++", ha semplicemente torto riguardo alla definizione delle lingue.
C ++ consente qualsiasi cosa che rispetti il paragrafo precedente. E se c'è qualcosa che la commissione ha proposto di usare, allora sta usando .hpoiché questa è l'estensione citata in giudizio in tutti gli esempi del documento ISO.
Conclusione:
Finché non vedi / senti alcun bisogno di usare .hover .hppo viceversa, non dovresti preoccuparti. Perché entrambi formerebbero un nome di intestazione valido della stessa qualità rispetto allo standard. E quindi tutto ciò che RICHIEDE di usare .ho .hppè una restrizione aggiuntiva dello standard che potrebbe persino essere in contraddizione con altre restrizioni aggiuntive non conformi tra loro. Ma poiché OP non menziona alcuna restrizione linguistica aggiuntiva, questa è l'unica risposta corretta e approvabile alla domanda
" * .h o * .hpp per le definizioni della classe " è:
Entrambi sono ugualmente corretti e applicabili purché non siano presenti restrizioni esterne.
1 Da quello che so, a quanto pare, è il framework boost che è venuto fuori con quell'estensione .hpp.
2 Naturalmente non posso dire cosa ci porteranno alcune versioni future!