Video

Du willst wissen, was es mit den Header-Dateien genau auf sich hat? Hier erklären wir dir das Prinzip der Header-Dateien.

Inhaltsübersicht

Header-Datei C – Was sind Header-Dateien?

Bei Header-Dateien handelt es sich im Prinzip um nichts anderes als Textdateien mit der Dateiendung h. Sie liefern uns wichtige Informationen zu den uns zur Verfügung stehenden Funktionsprototypen, versorgen uns mit symbolischen Konstanten und führen eine Liste aller verfügbaren Makros.

Das sind alles nützliche Informationen, die vollkommen wertlos sind, wenn du folgendes ignorierst: Du solltest niemals Bibliotheksfunktionen oder Funktionsdefinitionen direkt in eine Header-Datei schreiben!

Header-Datei C, Header-Dateien, C Header
direkt ins Video springen
Header-Dateien

Wenn wir also eine korrekte Header-Datei haben, können wir diese einbinden. Das erfolgt ähnlich wie bei Standard-Bibliotheken #include<stdio.h>, allerdings entledigen wir uns der Klammern und ersetzen sie durch Anführungszeichen #include „bsp.h“.

Diese Weise, eine Datei anzubinden, veranlasst den Präprozessor beim Übersetzen dazu, die angegebene Header-Datei in den Quellcode zu kopieren.

C Header Datei Beispiel

Wie sieht so eine header-Datei überhaupt aus? Schauen wir uns dazu ein Beispiel an. In den ersten beiden Zeilen finden wir sogenannte bedingte Anweisungen. Konkret bewirken diese, dass unser Header nur genau einmal in den erweiterten Quellcode kopiert wird – selbst wenn einmal ein Fehler passieren sollte und deswegen die Datei mehrmals mit include eingebunden wird.

Header-Datei C, C Header
direkt ins Video springen
Beispiel

Das kann man auch direkt am ersten „Wort“ in Zeile eins sehen, denn ifndef steht für nichts anderes, als für „if not defined“. Die nachfolgende Zeile bildet dann erst unsere „Bibliothek“ aus den nachfolgenden Deklarationen. Darunter sehen wir dann auch unsere Funktions-Prototypen. Sie unterscheiden sich insofern von normal definierten Funktionen, dass sie nicht mit einem Anweisungsblock enden, sondern nach den Parametern einfach ein Strichpunkt gesetzt wird.

Du kannst dir diese Art Funktionen aufzulisten vorstellen, wie ein Klingelbrett in einem Hochhaus. Wir sehen zwar nur die Namen der Bewohner, aber wissen trotzdem, wo diese wohnen und können sie besuchen. Ganz am Ende beenden wir mit #endif. Du kannst natürlich auch zusätzlich zu Funktions-Prototypen noch alle anderen vorher genannten Komponenten in einer solchen Datei platzieren.

Jetzt weißt du alles, was du über Header wissen musst und kannst anfangen, deine eigenen Bibliotheken anzulegen.

Studyflix vernetzt: Hier ein Video aus einem anderen Bereich

Header-Dateien — häufigste Fragen

(ausklappen)
  • Was ist der Unterschied zwischen #include mit spitzen Klammern und #include mit Anführungszeichen?
    Der Unterschied zwischen #include <...> und #include "..." ist, wo der Präprozessor nach der Header-Datei sucht. Mit spitzen Klammern sucht er in den Standard-Include-Pfaden für Bibliotheken. Mit Anführungszeichen sucht er zuerst im Projektordner und danach in den Standardpfaden.
  • Warum braucht man in Header-Dateien #ifndef und #endif?
    In Header-Dateien braucht man #ifndef und #endif, damit der Header beim Einbinden nur einmal berücksichtigt wird. Ohne diesen Schutz kann derselbe Header durch mehrere #include-Stellen mehrfach „eingeklebt“ werden. Das führt dann oft zu Doppel-Deklarationen, zum Beispiel bei Makros oder Funktionsprototypen.
  • Darf man globale Variablen in einer Header-Datei definieren?
    Globale Variablen sollte man in einer Header-Datei nicht definieren, weil ein Header in mehrere .c-Dateien eingebunden werden kann. Dann würde die Variable mehrfach entstehen und das führt zu Problemen beim Übersetzen oder Linken. Üblich ist: In die .h kommt nur eine Deklaration mit extern, die Definition steht in genau einer .c-Datei.
  • Was ist ein Beispiel für eine Header-Datei?
    Ein Beispiel für eine Header-Datei ist eine .h mit Include-Guard und Funktionsprototypen, zum Beispiel:
    #ifndef BSP_H
    #define BSP_H
    int add(int a, int b);
    #define MAX 10
    #endif
    Der Funktionsprototyp endet mit einem Semikolon und enthält keinen Anweisungsblock.

Nach Beantwortung speichern wir deine Antwort, um Studyflix zu verbessern. Mehr dazu erfährst du in unserer Datenschutzerklärung.

Programmierung verstehen

Header-Dateien gehören zur Programmierung in C und sind ein wichtiger Teil von Code mit mehreren Dateien. Wer sich mit Programmierung beschäftigt, lernt, wie Quellcode aufgebaut ist und wie Funktionen, Deklarationen und Dateien zusammenarbeiten. So wird klar, warum sauberer Aufbau und klare Trennung im Code wichtig sind. Im Informatikbereich findest du passende Videos zu diesem und verwandten Themen.

Lernen lohnt sich! Entdecke hier deine Chancen.