Eine Header-Datei wird im Allgemeinen verwendet, um eine Schnittstelle oder einen Satz von Schnittstellen innerhalb einer Anwendung zu definieren. Stellen Sie sich eine Header-Datei als etwas vor, das die externe Funktionalität eines Programms zeigt, während die Details der technischen Implementierung weggelassen werden.
Wenn Sie beispielsweise ein Programm optimieren, würden Sie höchstwahrscheinlich die Quelldatei (.cpp) ändern, um den Algorithmus zu verbessern, aber die Header-Datei würde sich nicht ändern, da externe Clients die Methoden immer noch mit denselben Parametern und aufrufen Rückgabewerte.
In einer objektorientierten Sprache wie C ++ enthält eine Header-Datei im Allgemeinen Folgendes:
- Klassenbeschreibung und Vererbungshierarchie
- Klassendatenelemente und -typen
- Klassenmethoden
Es gibt zwar nichts, was die Implementierung von Code in einer Header-Datei verhindert, dies wird jedoch im Allgemeinen nicht bevorzugt, da dies zusätzliche Kopplungen und Abhängigkeiten im Code verursachen kann.
In einigen Fällen (z. B. Vorlagenklassen) muss die Implementierung aus technischen Gründen in der Header-Datei definiert werden.
Eine Bibliothek ist eine Code-Sammlung, die Sie einem Programm oder einer Gruppe von Programmen zur Verfügung stellen möchten. Es umfasst die Implementierung einer bestimmten Schnittstelle oder eines Satzes von Schnittstellen.
Code wird in einer Bibliothek definiert, um das Duplizieren von Code zu verhindern und die Wiederverwendung zu fördern. Eine Bibliothek kann statisch verknüpft (.lib) oder dynamisch verknüpft (.dll) sein:
Eine statisch verknüpfte Bibliothek definiert eine Reihe von Exportsymbolen (die als Methodendefinitionen betrachtet werden können), die dann während der Verknüpfungsphase des Erstellungsprozesses mit der endgültigen ausführbaren Datei (.exe) verknüpft werden. Es hat den Vorteil einer schnelleren Ausführungszeit (da die Bibliothek nicht dynamisch geladen werden muss) auf Kosten einer größeren Binärdatei (da die Methoden im Wesentlichen in der ausführbaren Datei repliziert werden).
Eine dynamisch verknüpfte Bibliothek wird während der Ausführung eines Programms und nicht während der Verknüpfung eines Programms verknüpft. Dies ist nützlich, wenn mehrere Programme dieselben Methoden erneut verwenden müssen, und wird häufig in Technologien wie COM verwendet.