main() { ... } |
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
die Parameterliste (genauer, die Typen der Parameter) vorgeschrieben, wobei
argv[0]
den Programmnamen und
argv[1]
... argv[argc-1]
die Argumente
beim Programmaufruf als Zeichenketten übergeben.
argc
// 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; } |
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.