2010-01-02 5 views
8

Mi stavo chiedendo quale sia la differenza tra i file .cpp e .h? Cosa dovrei usare un file di intestazione (.h) per e per cosa dovrei usare un file cpp?CPP | .h files (C++)

+1

Come suggerimento, utilizzare il file 'h' per i file di intestazione del linguaggio C e' hpp' o 'hxx' per i file di linguaggio C++. Un file di origine C++ può includere file di intestazione del linguaggio C, ma i file di origine C non possono includere i file di intestazione C++. Quindi se il file di intestazione contiene dichiarazioni o definizioni specifiche in C++, chiamatelo con un'estensione 'hpp' o' hxx'. –

risposta

13

In generale, e in realtà potrebbe essere molto meno generale:

.h file (intestazione) sono per le dichiarazioni di cose che vengono utilizzati molte volte, e sono #include d in altri file

file cpp (attuazione) sono per tutto il resto, e non sono quasi mai #include d

+1

Ok, quindi per vedere se ho capito bene; Se ho una classe, ad esempio InventoryClass, la inserirò in un file .h e chiamerò i suoi metodi da un file .cpp? Grazie anche per la risposta. :) –

+2

In genere si inserisce la dichiarazione della classe (ovvero: ho questi campi, metodi, ecc.) Nel file di intestazione. Ogni metodo sarebbe implementato nel file cpp. –

+0

@baeltazor Sì, questa è l'idea. – James

2

Per convenzione, i file .h sono qualcosa che si include. I file CPP sono qualcosa che aggiungi al tuo progetto per la compilazione in un file oggetto separato e quindi passando al linker.

+0

grazie Pavel. –

1

file h è chiamato il file di intestazione. Di solito metti la tua interfaccia lì (le cose che vuoi essere pubbliche). Il file cpp è il punto in cui implementa effettivamente la tua interfaccia.

4

Tecnicamente, non c'è differenza. C++ ti permette di inserire il tuo codice in qualsiasi file, con qualsiasi formato, e dovrebbe funzionare.

Per convenzione, si inseriscono le dichiarazioni (in pratica, ciò che costituisce la propria API) nei file .h e vengono definite "intestazioni". I file .cpp sono per il vero "coraggio" del tuo codice - i dettagli di implementazione.

In genere, i file di intestazione sono inclusi con #include da altri file nel progetto (e altri progetti, se si sta creando una libreria), in modo che il compilatore possa ottenere l'interfaccia richiesta per la compilazione. L'implementazione, nei file .cpp, viene in genere implementata in modo che esista un file .cpp che "compila" l'implementazione per file .h.

1

Prima di tutto, entrambi sono file di testo che contengono codice per il compilatore o il pre-processore C++. Per quanto riguarda il sistema non c'è differenza.

Per convenzione vengono utilizzate estensioni di file diverse per indicare il contenuto dei file. Nei programmi C si tende a vedere i file .h e .c mentre in C++ .hpp e .cpp servono gli stessi scopi.

Il primo gruppo, i file .h e .hpp, chiamati file di intestazione, contengono per lo più codice non in esecuzione come le definizioni di costanti e prototipi di funzione. Vengono aggiunti ai programmi tramite la direttiva #include e utilizzati non solo dal programma o dalla libreria in questione ma da altri programmi o librerie che ne faranno uso, dichiarando punti di interfaccia e contratti che definiscono i valori. Sono anche usati per impostare i metadati che possono cambiare durante la compilazione per diversi sistemi operativi.

Il secondo gruppo, i file .c e .cpp, contengono le parti in esecuzione del codice per la libreria o il programma.

0

Correggetemi se sbaglio ma,

Quando si #include qualcosa, inserisce più o meno l'intero inclusi file in quella con il comando includere; cioè, quando includo, dico "macros.h" in "genericTools.cpp", l'intero contenuto di "macros.h" è posto in "genericTools.cpp" in quel punto. Questo è il motivo per cui è necessario utilizzare cose come "#pragma once" o altre protezioni, per evitare di includere lo stesso file due volte.

Di nota, il codice di modello deve essere interamente nel file che si intende includere altrove.(Non sono sicuro di questo: le specializzazioni di template possono essere modificate dai file inclusi e collegate come una normale funzione?)

0

Il file di implementazione è il nostro programma o codice effettivo .cpp. Quando abbiamo bisogno di utilizzare diverse funzioni integrate nel nostro codice, dobbiamo includere il file di intestazione che è .h file.

Questi file .h contengono il codice effettivo delle funzioni integrate che utilizziamo, quindi possiamo semplicemente chiamare le rispettive funzioni.

Pertanto, mentre compiliamo il nostro codice, possiamo vedere un numero maggiore di righe compilate rispetto a quello che abbiamo effettivamente codificato perché non solo il nostro codice è compilato ma insieme a quello (codice delle) funzioni (che sono incluse nei file .h) sono anche compilati.