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 '

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top