Ich weiß, dass .h-Datei haben soll:
Aber ist es wichtig, es zu einer .h
-Datei zu machen?
Ich habe versucht, meine .h
-Datei in eine .c
-Datei umzubenennen und sie funktioniert immer noch.
We can name our file to be anything, but we choose to name it as a .h file.
Habe ich Recht?
Die Verwendung von .h zum Benennen von Header-Dateien ist nur eine Konvention. Sie werden auch sehen (wahrscheinlich auf Unix-ähnlichen Plattformen):
Persönlich würde ich dringend empfehlen, bei .h zu bleiben. Verwenden Sie insbesondere nicht .H, oder Sie werden in einer Welt der Schmerzen sein, wenn Sie Ports jemals in ein Dateisystem ohne Berücksichtigung von Groß- / Kleinschreibung portieren müssen.
Während die genaue Benennung eine Konvention ist, ist der Unterschied zwischen der Behandlung von Header-Dateien und Quelldateien nicht - Header-Dateien sind nicht in Objektdateien kompiliert, aber in Quelldateien enthalten (zusammen bilden Übersetzungseinheiten). Darüber hinaus können sie in mehreren Quelldateien enthalten sein, sodass mehrere Quelldateien die gleichen Definitionen verwenden. Die Semantik der Dateien kann gleich sein, aber der Compiler behandelt sie aufgrund ihrer Verwendung anders.
Was die Benennung angeht, habe ich persönlich zumindest diese gesehen - *.h
, *.H
(hugh), *.hpp
, *.hxx
, *.hh
, *.inl
(für normale Header, nicht nur inline Code - yuck). Gewöhnlich begleitet von einer passenden Objektdateierweiterung.
Beachten Sie, dass Header der Standardbibliothek keine Erweiterung haben - z. Zeichenfolge.
Es ist also alles eine Frage des Geschmacks und der Konventionen - was Sie #include
, das wird enthalten sein.
Ich dachte, es könnte sich lohnen, die vorherige Antwort für Visual Studio-ähnliche IDEs zu erweitern.
Der Einfachheit halber sollten Sie Namenskonventionen verwenden, die von Ihrer Programmier-IDE erkannt werden. Die wichtigsten Regeln, die es hat, sind diejenigen, die ihm sagen, welcher Compiler für welche Dateien verwendet werden soll. Zum Beispiel wird .c als C-Code kompiliert, .cpp als C ++, .cs als C #, .rc vom Ressourcen-Compiler und so weiter.
Durch die Benennung von etwas .h oder etwas anderem, das nicht von einer der Standard-Compiler-Auswahlregeln abgedeckt wird, wird verhindert, dass eine Datei eigenständig kompiliert wird, was für Header-Dateien gewünscht ist. Wenn Sie Ihren Test der Umbenennung Ihres Headers in Visual Studio in .c versucht hätten, wäre er für Sie kompiliert worden, wenn Sie ihn nicht explizit vom Build ausgeschlossen hätten.
Möglicherweise sind in Ihrer IDE noch andere Werkzeuge verfügbar, zum Beispiel Werkzeuge zum Generieren von Klassendiagrammen, zur Quellcodeanalyse usw., und diese können auch Dateinamenskonventionen haben, mit denen Sie kompatibel bleiben sollten.
Unsere großen Entwicklungsprojekte #include
cc-Dateien aus der cc-Datei für Klassen mit Hunderten von Methoden. Ich war damit nicht einverstanden, aber es gab Gründe.
kompilieren und verknüpfen Sie Ihre .h und .cpp mit .obj. Dann geben Sie Ihrem Partner hh und .obj (Ihr Teil). Ihr Partner hat keine Kenntnis über den eigentlichen Code. Schließlich verschmelzen Linker alle Objekte zu einer ausführbaren Datei. .h ist ein bekannter Indikator, der dem Programmierer mitteilt, dass diese Datei keine Definition enthält. wir können .xyz verwenden, wenn die ganze Welt es akzeptiert: -)
Darüber hinaus, wenn Sie ein Makefile haben, ist es möglich, etwas zu sagen, kompilieren Sie alle Dateien, die auf .c enden, auf Objektdateien, anstatt sie einzeln zu spezifizieren. Wenn Sie beginnen, Headerdateien mit den Erweiterungen .c zu benennen, dann versucht das make-System möglicherweise, die Headerdateien in Objektdateien zu kompilieren ...
Damit getrennte * .h- und * .c-Dateien vorliegen, bleibt alles klar und deutlich, nicht nur für den Programmierer, sondern ebenso entscheidend für das make-System, den Compiler und den Linker.
Tags und Links c c++ header-files