Programmieren
 
 
 
 
 
C-Grundkurs
 
 
 
 
 
.. main() - die Startfunktion
 
 

 
 
 
 
 
Die Funktion main() muss in jedem C–Programm enthalten sein, welches von Compiler und Linker zu einem lauffähigen Programm des Typs ProgrammName.exe in Maschinensprache überstezt werden soll. main() ist bei läuffähigen Programmen die Startfunktion, die vom Betriebssystem her aufgerufen wird.

main() gehorcht den Regeln, die für den Aufbau jeder beliebigen C- Funktion gelten und unterliegt den gleichen Syntatxregeln (Rechtschreibregeln). Im Gegensatz zu andern Funktionen muss main() jedoch nicht deklariert werden, denn der Compiler weiss wie main() auszusehen hat. Der Linker liefert allerdings eine Fehlermeldung, wenn main() nicht vorhanden ist und eine .exe Datei von ihm gefordert wird.

Syntax einer Funktion im einfachsten Fall:
 
 
void main (void)           // Funktionskopf
{
  //Befehle der Funktion   // Funktionskörper zwischen {}
}
 
 
 
 
 
Die obige main() Funktion ist voll lauffähig, tut allerdings nichts. Sie wird vom Betriebssystem gestartet und endet sofort wieder. Interessant ist diese Funktion dennoch, um den 'Overhead' (den Überhang) eines C-Programms kennenzulernen. Übersetzen Sie dieses Programm und schauen Sie in einem Datei-Explorer nach wie viel Speicher dieses Programm benötigt.
 
 
 
 
 
Der Funktionskopf gehorcht der Regel ..

typ des Rückgabewerts der Fkt FunktionsName (Übernahmewerte der Fkt)

da die obige main()-Funktion weder Übernahmewerte vom Betriebssystem erwartet noch einen oder mehrere Werte zurückgeben soll, steht bei ihr an beiden Positionen die Angabe void, was soviel wie leer bedeutet.

Der Funktionskörper steht zwischen zwei geschweiften Klammern {  }. Hier findet die Programmierung statt, welche das Benutzerprogramm ausmachen, .. wird die zweite Klammer erreicht ist das Programm beendet und kehrt zum Betriebssystem zurück.
Die angegebene Funktion main() ist voll lauffähig und wird zu einem Programm mit der Endung .exe übersetzt. Sie tut jedoch nichts. Um eine Wirkung des Programms zu erzielen wird im nächsten Beispiel die Funktion printf() aus der statischen Bibliothek (Library) hinzugefügt. Diese kann Text auf den Bildschirm schreiben. Da Funktionen aus der statischen Bibliothek, genau wie eigene Funktionen, deklariert werden müssen, ist die Zeile #include <stdio.h> notwendig. In der Textdatei auch Headerdatei oder Includedatei stdio.h sind neben der Funktion printf() noch viele andere Funktionen der Bibliothek erklärt, doch das stört den Compiler nicht. Er ignoriert Deklarationen von Funktionen, die nicht in dem Programm vorkommen, dass er gerade übersetzt.
 
 
 
 
 
Das Programm Hallo Welt
 
#include <stdio.h>        // enthält die Deklaration von
                          // printf()
void main (void)          
{
  printf ("Hallo Welt");  // Aufruf der Bibliotheksfunktion
                          // printf()
}                         // -> Programmende
 
 
 
 
Anmerkung
Zu den Funktionen der statischen Bibliothek gibt es Handbücher, in denen ihre Funktionsweise erklärt wird. Einige Erklärungen sind hier unter dem Menüpunkt [C Bibliothek] ebenfalls vorhanden. Eine Online-Hilfe erhält man bei den meisten IDEs, wenn man im Editor der IDE den Cursor in den Namen einer Funktion der statischen Bibliothek rückt und die Tastenkombination [Ctrl][F1] bzw. [Strg][F1] drückt. In dieser Hilfe wird auch angegeben, in welcher Headerdatei.h sich die Deklaration der Funktion befindet.
 
 
 
 
 
Problem
Bei Betriebssystemen welche die obige Funktion in einem eigenen Fester zur Ausführung bringen, dürfte die menschliche Reaktion nicht ausreichen, um das Öffnen und Schliessen des Fensters zu beobachten, geschweige denn den ausgegebenen Text zu lesen. Für diesen Fall kann die Funktion getch() der statischen Bibliothek in das Programm eingefügt werden. Sie wartet auf einen Tastendruck von der Tastatur. Während der Wartezeit bis zu diesem Tastendruck bleibt das Ausgabefenster bestehen und man kann es sich ansehen. Da der Compiler für getch() ebenfalls eine Deklaration benötigt, diese aber nicht in stdio.h enthalten ist, muss die Hederdatei conio.h eingebunden werden. Das obige Programm entwickelt sich nun zu folgendem Aussehen..
 

			
#include <stdio.h>        // Deklaration von printf()
#include <conio.h>        // Deklaration von getch()

void main (void)          
{
  printf ("Hallo Welt");  // Aufruf der Bibliotheksfunktion
                          // printf()
  getch();                // Aufruf von getch()
}    

			
 
 
 
 

Bei der Sprache C müssen alle Befehlszeilen innerhalb eines Anweisungsblocks { .. } mit einem ; Semikolon abgeschlossen werden. Das ; ist das Trennzeichen zwischen zwei Befehlen, auch wenn diese auf verschiedenen Zeilen stehen.
Einzelne Befehlszeilen können aber an beliebiger Stelle durch ein Carriage Return-Zeichen <cr> auf verschiedene Zeilen verteilt werden.

Auch die Funktion main() kann genau einen Wert an das Betriebssystem zurückgeben. Sie kann auch Übergabeparameter von dort erhalten. Allerdings sind beide Verfahren, anders als bei beliebigen Funktionen, in besonderer Weise reglementiert, .. worauf hier im Moment nicht eingegangen werden soll. Für den Moment geht nur void main (void) {..} oder int main(void) {..}
 
 
 
 
www..de