Heim > Artikel > Backend-Entwicklung > Sollten C-Klassendefinitionen in Header-Dateien platziert werden?
Die Platzierung von C-Definitionen in Header-Dateien: Ist das eine gängige Praxis?
Im Bereich der C-Programmierung die Platzierung von Klasse Erklärungen und Definitionen hat eine Debatte ausgelöst. Traditionell bestand die Norm darin, diese Aspekte in Include-Dateien bzw. *.cpp-Dateien zu unterteilen. Ein Kollege behauptet jedoch, dass aktuelle Best Practices die Aufnahme von Definitionen in Header-Dateien vorschreiben.
Um die Verbreitung dieses angeblich neuen Idioms einzuschätzen, untersuchen wir das weit verbreitete Verwendungsmuster in der C-Entwicklung:
Konventioneller Ansatz: Trennung von Deklarationen und Definitionen
Unzählige C-Entwickler halten sich an den konventionellen Stil, Dazu gehört die Deklaration von Klassen in Include-Dateien (.h) und die Implementierung ihrer Definitionen in .cpp-Dateien. Diese Vorgehensweise ähnelt der Trennung von Spezifikations- und Textdateien in Modula-2 und Ada.
Vorteile:
Nur-Header-Definitionen: Eine Alternative
In einigen Fällen kann es gerechtfertigt sein, Definitionen in Header-Dateien zu platzieren, insbesondere um Compiler-Optimierungen wie Inlining zu verbessern. Die Übernahme dieses Ansatzes bringt jedoch Nachteile mit sich:
Wenn nur Header Definitionen sind angemessen
Das einzige Szenario, in dem reine Header-Definitionen wirklich von Vorteil sind, ist die Arbeit mit Vorlagen. Moderne C-Bibliotheken verwenden häufig in großem Umfang Vorlagen, die nur Header-Definitionen erfordern.
Schlussfolgerung:
Die Behauptung Ihres Kollegen, dass alle C-Deklarationen in Header-Dateien definiert werden sollten, wird nicht unterstützt durch gängige Praxis. Während reine Header-Definitionen ihre Nischenanwendungen haben, bleibt der etablierte Ansatz der Trennung von Deklarationen und Definitionen die weithin akzeptierte Norm.
Das obige ist der detaillierte Inhalt vonSollten C-Klassendefinitionen in Header-Dateien platziert werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!