CPP | .h-Dateien (C ++)

8

Ich habe mich nur gefragt, was der Unterschied zwischen .cpp und .h Dateien ist? Wofür würde ich eine Header-Datei (.h) verwenden und wofür würde ich eine cpp-Datei verwenden?

    
jay_t55 02.01.2010, 00:28
quelle

7 Antworten

13

Im Allgemeinen, und es könnte wirklich viel weniger allgemein sein:

.h (Header) -Dateien sind für Deklarationen von Dingen, die oft verwendet werden, und sind #include d in anderen Dateien

.cpp (Implementierungsdateien) sind für alles andere und sind fast nie #include d

    
James 02.01.2010, 00:31
quelle
4

Technisch gibt es keinen Unterschied. C ++ ermöglicht es Ihnen, Ihren Code in jede Datei in einem beliebigen Format zu stellen, und es sollte funktionieren.

Per Konvention fügen Sie Ihre Deklarationen (im Grunde genommen das, was Ihre API bildet) in die .h-Dateien ein und werden als "Header" bezeichnet. Die .cpp-Dateien sind für den eigentlichen "Mut" Ihres Codes - die Implementierungsdetails.

Normalerweise haben Sie die Header-Dateien mit #include von anderen Dateien in Ihrem Projekt (und anderen Projekten, wenn Sie eine Bibliothek erstellen), so dass der Compiler die zum Kompilieren erforderliche Schnittstelle bekommen kann. Die Implementierung in den CPP-Dateien wird normalerweise so implementiert, dass eine .cpp-Datei die Implementierung per .h-Datei "ausfüllt".

    
Reed Copsey 02.01.2010 00:37
quelle
2

Laut Konvention sind .h-Dateien etwas, das Sie #einschließen. CPP-Dateien werden Ihrem Projekt hinzugefügt, um sie in eine separate Objektdatei zu kompilieren und dann an den Linker weiterzuleiten.

    
Pavel Radzivilovsky 02.01.2010 00:31
quelle
1

Die .h-Datei wird als Header-Datei bezeichnet. Du legst normalerweise deine Schnittstelle dorthin (das Zeug, das du öffentlich sein willst). In der cpp-Datei implementieren Sie Ihre Schnittstelle.

    
D.C. 02.01.2010 00:31
quelle
1

Erstens sind beide Textdateien, die Code für den C ++ - Compiler oder den Preprozessor enthalten. Soweit das System betroffen ist, gibt es keinen Unterschied.

Per Konvention werden verschiedene Dateinamenerweiterungen verwendet, um den Inhalt von Dateien anzugeben. In C-Programmen neigen Sie dazu, .h- und .c-Dateien zu sehen, während in C ++ .hpp und .cpp dieselben Zwecke erfüllen.

Die erste Gruppe, .h und .hpp-Dateien, Header-Dateien genannt, enthalten meist nicht ausführbaren Code wie Definitionen von Konstanten und Funktionsprototypen. Sie werden über die #include -Direktive zu Programmen hinzugefügt und nicht nur von dem betreffenden Programm oder der betreffenden Bibliothek verwendet, sondern auch von anderen Programmen oder Bibliotheken, die von ihnen Gebrauch machen und Schnittstellenpunkte und Werte definierende Verträge deklarieren. Sie werden auch verwendet, um Metadaten festzulegen, die sich beim Kompilieren für verschiedene Betriebssysteme ändern können.

Die zweite Gruppe, C- und CPP-Dateien, enthalten die ausführenden Teile des Codes für die Bibliothek oder das Programm.

    
HerbN 02.01.2010 01:17
quelle
0

Korrigiere mich, wenn ich falsch liege, aber

Wenn Sie etwas einschließen, fügt es mehr oder weniger die gesamte eingeschlossene Datei in die mit dem Befehl include ein; das heißt, wenn ich "macros.h" in "genericTools.cpp" einfüge, wird der gesamte Inhalt von "macros.h" an diesem Punkt in "genericTools.cpp" platziert. Aus diesem Grund müssen Sie Dinge wie "#pragma once" oder andere Schutzmaßnahmen verwenden, um zu verhindern, dass die gleiche Datei zweimal eingefügt wird.

Beachten Sie, dass Vorlagencode vollständig in der Datei enthalten sein muss, die Sie auch an anderer Stelle enthalten. (Ich bin mir nicht sicher - können Vorlagenspezialisierungen aus den enthaltenen Dateien entfernt und wie eine normale Funktion verknüpft werden?)

    
Narfanator 02.01.2010 03:40
quelle
0

Das .cpp , das die Implementierungsdatei ist, ist unser tatsächliches Programm oder Programm. Wenn wir verschiedene eingebaute Funktionen in unserem Code verwenden müssen, müssen wir die Header-Datei einschließen, die .h files ist.

Diese .h -Dateien enthalten den tatsächlichen Code der eingebauten Funktionen, die wir verwenden, daher können wir einfach die entsprechenden Funktionen aufrufen.

Während wir unseren Code kompilieren, können wir daher mehr Zeilen sehen, als wir tatsächlich codiert haben, weil nicht nur unser Code kompiliert wird, sondern auch die (Code-) Funktionen, die in .h enthalten sind. Dateien) werden ebenfalls kompiliert.

    
Pankti 09.08.2016 16:34
quelle

Tags und Links