Durch die Verwendung von Funktionen kann man Programme strukturieren und effizienter machen.
In unserem Beispiel möchten wir die Geldeingabe und die Getränkeausgabe für unseren Kaffeeautomaten optimieren. Gleiche Programmteile möchten wir nur einmal programmieren und dann von verschiedenen Stellen aufrufen können.
Nachdem ich also in der letzten Folge schon einmal kurz die prinzipielle Verwendung von Funktion angesprochen habe, möchte ich mit der heutigen Folge beginnen, etwas tiefer in das Thema Funktionen in C einzusteigen.
Definition und Deklaration
Konkret soll es heute um das Thema Definition und Deklarationen von Funktionen in C gehen. Um die Verwendung von Funktionen zu verstehen ist es hilfreich ein wenig über die Arbeitsweise eines Compilers zu verstehen.
Das prinzipielle Vorgehen beim Übersetzen eines Programms hatte ich zu Beginn des Kurs schon vorgestellt. Wenn Du Dich nicht mehr genau erinnerst, könnte diese Folge interessant sein, ich der ich die Zusammenarbeit von Compiler und Linker kurz zeige.
Im heutigen Video zeige ich zunächst noch einmal, wie Funktionen sich gegenseitig aufrufen können und demonstriere dann mit dem Emulator, die Probleme bei der Definition von Funktionen und die Lösung mit Hilfe der Deklaration von Funktionen.
Hier zunächst das heutige Video.
Die Ursprungsquelldatei:
/*—————————————————————————— HELLO.C Copyright 1995-2005 Keil Software, Inc. ——————————————————————————*/ #include <REG52.H> #include <stdio.h> /*———————————————— The main C function. Program execution starts here after stack initialization. ————————————————*/ void funk1(void); // Deklaration von funk1 void funk2(void); // Deklaration von funk2 void main (void) { /*———————————————— Setup the serial port for 1200 baud at 16MHz. ————————————————*/ #ifndef MONITOR51 SCON = 0x50; TMOD |= 0x20; TH1 = 221; TR1 = 1; TI = 1; #endif /*———————————————— Note that an embedded program never exits (because there is no operating system to return to). It must loop and execute forever. ————————————————*/ printf("In main()\n"); while(1) { } } //end main
Zusammengefasst
In der Definition einer Funktion wird genau festgelegt, wie eine Funktion aufgebaut ist, welche Parameter sie übergeben bekommt und welchen Wert sie an die aufrufende Funktion zurückgibt.
Eine Deklaration gibt dem Compiler Informationen darüber, dass eine bestimmte Funktion existiert und welche Parameter sie erwartet und welchen Wert sie zurückgibt. Die Deklaration einer Funktion hilft dem Compiler beim weiteren Übersetzen des Programms.
Häufig werden Deklarationen von Funktionen in sogenannten Header-Dateien ausgelagert und dann im Quellcode über den #include-Befehl eingebettet. Dies erhöht bei größeren Programmen die Übersichtlichkeit.
Dieser Artikel ist Teil des Mikrocontroller-Kurses auf ET-Tutorials.de.
[ >> Hier geht es zurück zur Übersichtsseite des Mikrocontroller-Kurses .]