Header-Datei

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Eine Header-Datei ist in der Programmierung, insbesondere in den Programmiersprachen C++ und C, eine Textdatei, die Deklarationen und andere Bestandteile des Quelltextes enthält. Quelltext, der sich in einer Header-Datei befindet, ist im Allgemeinen zur Verwendung in mehreren Programmen oder mehreren Teilen eines Programmes vorgesehen.

Aufgabe einer Header-Datei[Bearbeiten]

Zur Vereinfachung des Umgangs mit mittelgroßen oder großen Programmen unterteilt man Programme in mehrere sogenannte Übersetzungseinheiten. Dabei werden zusammengehörige Quelltextbestandteile in Dateien zusammengefasst, die sogenannten Header-Dateien, auf die durch Einbindung in den Quelltext von anderen Dateien Bezug genommen werden kann. Die Header-Dateien bilden dadurch die Schnittstelle zwischen den einzelnen Einheiten.

Durch die Organisation in Header-Dateien wird auch eine Neuübersetzung der auf die Schnittstelle zugreifenden Programme oder Programmteile bei Änderungen der Implementierung vermieden.

In Programmbibliotheken bilden Header-Dateien den einsehbaren Teil der Bibliothek, wohingegen der Rest in Übersetzungseinheiten oft vorübersetzt, also nicht in Form von Quelltext, vorliegt.

Die Einbindung einer Header-Datei in eine Übersetzungseinheit durch das Übersetzungsprogramm wird über spezielle Instruktionen veranlasst. In C bspw. durch die Compiler-Anweisung #include.

#include <stdio.h>
 
/* ... (weiterer Programmtext) */

In diesem Falle wird die Datei stdio.h eingebunden, die Deklarationen von Funktionen enthält, die wichtig für das Lesen und Schreiben von Dateien und Benutzereingaben sind. Sie ist Teil der Standard C Library libc.

Alternativen[Bearbeiten]

Header-Dateien funktionieren nach dem Prinzip der textuellen Ersetzung. In neueren Programmiersprachen, wie beispielsweise Java oder C#, wird dieses Konzept nicht mehr benötigt. Stattdessen werden Einheiten eingebunden, die nicht mehr Text sondern Symbolinformationen anbieten. Dies ermöglicht eine bessere Trennung zwischen Schnittstelle und Implementierung und führt in der Regel zu kürzeren Übersetzungszeiten.