Heim  >  Artikel  >  Backend-Entwicklung  >  Ist das Einfügen von C-Definitionen in Header-Dateien wirklich die universelle Norm?

Ist das Einfügen von C-Definitionen in Header-Dateien wirklich die universelle Norm?

Linda Hamilton
Linda HamiltonOriginal
2024-11-23 20:53:15901Durchsuche

Is Putting C   Definitions in Header Files Truly the Universal Norm?

Ist das Platzieren von C-Definitionen in Header-Dateien die universelle Norm?

Der eigene Programmierstil schreibt vor, dass Klassendeklarationen in Include-Dateien gespeichert werden, während Definitionen befinden sich in separaten .cpp-Dateien. Dieser Ansatz steht im Einklang mit dem Prinzip, das in der weithin beachteten Antwort von Loki im Artikel „C Header Files, Code Separation“ dargelegt wird.

Ein Kollege besteht jedoch darauf, dass C-Deklarationen im Allgemeinen Definitionen innerhalb derselben Header-Datei umfassen sollten. Er behauptet, dass dies eine allgemein akzeptierte moderne Praxis ist.

Überprüfung der Verbreitung dieser Praxis

Um die Gültigkeit dieser Behauptung festzustellen, untersuchen wir die gängigen Praktiken, die in beobachtet werden der Branche.

Antwort

Ihre Die Behauptung des Kollegen ist falsch. Die weit verbreitete Praxis war und ist es, Code in .cpp-Dateien (oder anderen vorgesehenen Erweiterungen) und Deklarationen in Headern aufzubewahren.

Die Platzierung von Code in Headern bietet zwar gelegentlich Vorteile, wie z. B. verbessertes Compiler-Inlining , es kann auch zu längeren Kompilierungszeiten führen, da der Code beim Einbinden wiederholt verarbeitet wird. Darüber hinaus kann es zu Komplexitäten bei zirkulären Objektbeziehungen kommen, wenn Code in Headern enthalten ist.

Zusammenfassend lässt sich sagen, dass die vorherrschende Praxis der Trennung von Code und Deklarationen entgegen der Behauptung Ihres Kollegen Ihrer Präferenz entspricht.

Ausnahmen und Klarstellungen

Eine bemerkenswerte Ausnahme ergibt sich bei Vorlagen. Moderne Bibliotheken wie Boost nutzen häufig Vorlagen und verfolgen häufig einen „nur Header“-Ansatz. Dies ist jedoch ein einzigartiges Szenario, das speziell auf Vorlagen anwendbar ist.

Nachteile von Nur-Header-Code

Es ist wichtig, die Nachteile des Schreibens von Nur-Header-Code zu berücksichtigen:

  • Verlängerte Kompilierungszeiten, wie aus Diskussionen über die Reduzierung der Kompilierungszeiten mit Boost hervorgeht Asio.
  • Bestimmte Elemente, wie z. B. globale Objekte, können nicht in Nur-Header-Bibliotheken implementiert werden, ohne auf Singletons oder andere problematische Lösungen zurückzugreifen.
  • Inkrementelle Kompilierungsvorteile gehen verloren, was zu langen Neukompilierungszeiten für führt sogar kleinere Änderungen.

Fazit

Die Die traditionelle Praxis der Trennung von Deklarationen und Definitionen bleibt in C der vorherrschende Ansatz. Auch wenn es bestimmte Szenarien gibt, in denen reiner Header-Code von Vorteil sein kann, ist es wichtig, seine Einschränkungen zu verstehen und ihn mit Bedacht einzusetzen. Die behauptete universelle Übernahme von reinen Header-Definitionen ist unbegründet und es ist ratsam, die bewährte Praxis der Trennung von Code und Deklarationen beizubehalten.

Das obige ist der detaillierte Inhalt vonIst das Einfügen von C-Definitionen in Header-Dateien wirklich die universelle Norm?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn