next up previous contents index
Nächste Seite: 7.7 Rekursive Funktionen Aufwärts: 7. Funktionen Vorherige Seite: 7.5.3 Eine einfache Bibliothek   Inhalt   Index


7.6 Das Hauptprogramm

Die bislang benutzte Syntax für das Hauptprogramm

main()
{
 ...
}
wird vom Compiler stets als
int main()
{
 ...
 return 0;
}

verstanden, da bei Funktionen ohne Typspezifikation der Typ int als Standard verwendet wird mit dem Standardrückgabewert 0. Ein Rückgabewert 0 bedeutet, daß das Hauptprogramm fehlerfrei abgearbeitet wurde.

Die Programmabarbeitung kann jederzeit, auch in Funktionen, mit der Anweisung exit(<int_value>); abgebrochen werden. Der Wert <int_value> ist dann der Rückgabewert des Programmes und kann zur Fehlerdiagnose herangezogen werden.

#include <iostream.h>
#include <stdlib.h>          // needed to declare exit()

void spass(const int);       // Declaration of spass()

int main()
{
 int n;
 
 cin  >> n;
 if (n<0)   exit(-10);       // choose an error code
 
 spass(n);                   // Call spass()
  
 return 0;                   // default return value is 0
}

void spass(const int n)      // Definition of spass()
{ ... }

Das obige Programm bricht bei n < 0 die Programmausführung sofort ab und liefert den Fehlercode 10. Die exit Anweisung kann auch in spass() verwendet werden.

Wie bei anderen Funktionen kann auch das Hauptprogramm mit Parametern aufgerufen werden, allerdings ist in

int main(int argc, char* argv[])

die Parameterliste (genauer, die Typen der Parameter) vorgeschrieben, wobei

//      for a real C++ solution, see Stroustrup, p.126 (§6.1.7)
#include <iostream.h>
#include <stdlib.h>             // needed for atoi, exit

void spass(const int);          // Declaration of spass()

int main(int argc, char* argv[])
{
 int n;
 
 cout << "This is code " << argv[0] << endl;
 
 if (argc > 1)			// at least one argument
  {
   n = atoi(argv[1]);		// atoi : ACSII to Integer
  }
 else				// standard input
  {
   cout << " Eingabe n : ";
   cin  >> n;
   cout << endl;
  }
  
 spass(n);			// Call spass()
  
 return 0;			// default return value is 0
}


void spass(const int n)
{
 if (n<0) exit(-10);		// choose an error code

 cout << "Jetzt schlaegt's aber " << n << endl;
 return;
}
(siehe Ex760.cc)

Die Funktion atoi(char *) (= ASCII to int) wandelt die übergebene Zeichenkette in eine Integerzahl um und wird in stdlib.h deklariert. Mittels der analogen Funktion atod(char *) läßt sich eine float-Zahl als Parameter übergeben. Nach dem Compilieren und Linken kann das Programm a.out mittels

LINUX> a.out

bzw.

LINUX> a.out 5

gestartet werden. Im ersteren Fall wird der Wert von n von der Tastatur eingelesen, im zweiten Fall wird der Wert 5 aus der Kommandozeile übernommen und n zugewiesen. Eine elegante, und echte C++-Lösung, bzgl. der Übergabe von Kommandozeilenparametern kann in [Str00, pp.126] gefunden werden.


next up previous contents index
Nächste Seite: 7.7 Rekursive Funktionen Aufwärts: 7. Funktionen Vorherige Seite: 7.5.3 Eine einfache Bibliothek   Inhalt   Index
Gundolf Haase 2004-01-15