Programmieren
 
 
 
 
 
C-Grundkurs
 
 
 
 
 
.. Headerdatei.h
 
 

 
 
 
 
 
Am Anfang der meisten C-Programme und auch bei anderen Sprachen sind Zeilen wie z.B. #include <stdio.h> zu finden. Nachdem geklärt wurde, dass die Präprozessordirektive #include, Dateien an der von ihr besetzten Stelle einfügt, soll nun geklärt werden, was es mit den eingefügten Dateien auf sich hat.
 
 
 
 
 
Diese Dateien die oft mit Include- oder Headerdatei bezeichnet werden, verdanken ihren Namen im ersten Fall der Direktive, die sie einbindet bzw. im 2. Fall ihrem häufigsten Inhalt. Dieser besteht häufg aus Deklarationen von Funktionen, also Funktionnsköpfen, den Headern die auch in dem Suffix der Datei .h ihren Niederschlag gefunden haben.

Wie auch immer die Namensgebung dieser Dateien lautet, es handelt sich grundsätzlich um ASCII-Textdateien, die eine beliebige Endung besitzen dürfen und alle Elemente eines Quellcodes enthalten dürfen.
Die einzigen zwei Bedingungen, die an diese Dateien gestellt werden, sind ..
 
 
1. Sie dürfen nur ASCII codierten Text enthalten
    Damit kann man sie mit jedem Texteditor, Officeprogramm usw. erstellen und lesen.

2. Ihre Inhalte müssen von dem Übersetzerprogramm verstanden werden können.
    Diese Bedingung versteht sich fast von selber, weil welchen Sinn sollte es haben,
    einem Übersetzerprogramm (Compiler/Assembler) eine Datei anzubieten, die nur
    Fehlermeldungen erzeugt.
 
 
 
 
 
Die Dateiendungen dieser Dateien lauten bei Verwendung der Programmiersprache C zwar meistens auf .h, aber wie bereits gesagt können auch beliebige andere Endungen verwendet werden. Beispiele wären .txt, .doc, .c, .cpp, .inc, .pas, .asm .. und was sonst noch alles möglich ist.

Die Inhalte
Grundsätzlich kann in den Include-Dateien alles das drinstehen, was auch in den Quelltextdateien steht. Allerdings beschränken sich die Programmierer normalerweise darauf , übergeordnete Dinge, dort unterzubringen. Bei den Include- oder den Headerdateien der statischen Bibliothek beispielsweise, befinden sich in diesen die Header- oder Kopfzeilen von Funktionen, also deren Deklarationen. Dieser Umstand führte auch zu deren Endung .h, was von Header abgeleitet ist. Überdies sind dort die Definitionen einiger Konstante untergebracht wie beispielsweise der Wert von PI, der dort per #define mit M_PI erklärt wurde.

.. was sich nicht in den Headerdateien der statischen Bibliothek befindet
In den Headerdateien, die zusammen mit der IDE geliefert wurden und dort in dem Verzeichnis \include\ abgelegt wurden, befinden sich nicht die Bibliotheksfunktionen selber. Diese Funktionen wurden in Maschinensprache übersetzt und als .obj-Datei in der statischen Bibliothek.lib abgelegt. Darum nennt man sie Funktionen der statischen Bibliothek und nicht Funktionen der Headerdateien.

.. Beispiel
Die Funktion sqrt() -Square Root (ziehe die Quadratwurzel) wurde von pfiffigen Programmierer geschrieben und die haben den Quelltext in Maschinensprache übersetzen lassen. Es gibt also eine Datei sqrt.obj sowie einen Funktionskopf, der .. double sqrt(double);    heisst.

Der Funktionskopf von sqrt(), also double sqrt (double); steht in der Datei math.h. Diese Headerdatei muss man mit #include<math.h> in ein eigenes Programm einbinden, wenn man sqrt() benutzen will. Das geschieht, damit der Compiler überprüfen kann ob die Funktion richtig verwendet wurde, und ihr nicht aus Versehen ein String übergeben wurde. Bindet man math.h nicht ein, so generiert der Compiler die Fehlermeldung, ..                                                                               Function should have a Prototyp

Der Objektcode, also das Maschinenprogramm von sqrt(), ist in der statischen Bibliotheksdatei math.lib zu finden. Mit diesem Code hat der Programmierer so gut wie nichts zu tun. Nachdem sqrt() in seinem Programm aufgerufen wird, holt sich der Linker ohne besondere Nachfrage den Maschinencode aus der Bibliothek und hängt ihn an das eigene Programm an.

Da es in der statischen Bibliothek von C viele fertige Funktionen gibt, deren Header nicht alle in eine Headerdatei hineinpassen, gibt es also viele Headerdateien, wie math.h, stdio.h, conio.h usw. ..
 

 

 

 

www..de