Vielleicht nochmal ein kurzes Beispiel...
das ist eine Funktionsdefinition, die irgendwo in einer .c Datei stehen kann:Aufrufen kann man diese Funktion dann z.B. so:Code:int Addiere(int a, int b) { return a + b; }Aber das geht nur in der gleichen .c Datei, und auch erst nach der Funktionsdefinition, da diese Funktion dem Compiler vorher einfach nicht bekannt ist.Code:int Ergebnis = Addiere(3, 5);
Abhilfe schafft eine Funktionsdeklaration (auch "Prototyp" genannt):
Wie du siehst enthält diese Deklaration selbst keinen Code, sondern dient nur als Hinweis nachdem Motto "pass auf, da gibt es eine Funktion mit dem Namen Addiere die zwei int Parameter hat, und einen int als Rückgabewert liefert". Setzt man diese Deklaration ganz an den Anfang der .c Datei, ist die Funktion Addiere in der gesamten Datei verfügbar (auch schon vor deren Definition).Code:int Addiere(int a, int b);
Möchte man in einer anderen .c Datei auf diese Funktion zugreifen reicht das aber noch nicht, in diesem Fall schreibt man den Prototyp nicht in die .c Datei, sondern in eine .h Datei die per #include in allen .c Dateien eingebunden wird, welche Zugriff auf die Funktion Addiere benötigen.
Dabei sollte man wissen, daß z.B. ein #include "abcdef.h" vom Präprozessor einfach durch den kompletten Text von abcdef.h ersetzt wird (bevor der Compiler die Datei verarbeitet). Das ganze ist also nichts weiter als ein automatisches Einfügen der Funktionsdeklarationen (und was sonst noch so in den .h Dateien steht), in allen .c Dateien die sie benötigen.







Zitieren

Lesezeichen