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
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".
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.
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.
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?)
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.
Tags und Links c++ header-files