L'uso di .h come intestazione per un file c ++ è errato?
-
19-08-2019 - |
Domanda
L'uso di .h come intestazione per un file c ++ è errato?
Lo vedo dappertutto, specialmente con il codice scritto nello stile "C". Ho notato che Emacs seleziona sempre lo stile di evidenziazione C per un'intestazione .h, ma c ++ per hpp o hh.
È effettivamente " sbagliato " etichettare le intestazioni .h o è solo qualcosa che mi dà fastidio?
EDIT:
C'è una buona (ish) ragione per cui questo mi infastidisce, se ho i file di progetto etichettati, 'hpp & amp; cpp 'Posso cavarmela con' grep qualcosa * pp 'ecc. altrimenti devo digitare' .h cpp '
Soluzione
Non è sbagliato chiamare le intestazioni C ++ .h. Non ci sono regole su quali estensioni il tuo codice deve usare. Per i tuoi non-header, MSVC usa .cpp e anche su Linux, .cc. Non esiste uno standard globale e .h è decisamente molto usato.
Ma direi che chiamare le tue intestazioni .hpp (ho visto .hh anche poche volte) è molto più coerente e informativo che usare semplicemente .h.
Altri suggerimenti
niente di sbagliato in questo. Questa è l'impostazione predefinita con Microsoft Visual C ++.
Segui semplicemente lo standard che ti piace e seguilo.
Sei libero di usare .h
, .H
, .hpp
, .hxx
, < codice> .hh o whathaveyou. Proprio come sei libero di usare .c
per le fonti C e .C
, .cpp
, .cc
o .cxx
per le fonti C ++. L'estensione è in gran parte una convenzione.
È come con gli altri file - .c per C, .cpp per C ++ - usa .h per C, .hpp per C ++. Ciò soddisferà la maggior parte dei compilatori / redattori. Non è proprio sbagliato non farlo, ma può essere usato per dare un suggerimento su quale delle due lingue stai effettivamente usando.
Se vuoi interrompere quel comportamento senza rinominare i file, dovresti dare un'occhiata alla configurazione di Emacs e provare a cambiare il rilevamento del codice sorgente.
Poiché Emacs non ha un modo semplice per scoprire se un file .h è C o C ++, non è ridicolo scegliere C per i file .h e C ++ per i file .hpp.
Nota che tutti i file di intestazione boost sono contrassegnati con .hpp.