|
|
||
|
|
||
| .. Parameterübergabe an main() | ||
|
|
||
| Der Funktion main(), die bekanntlich die Startfunktion des eigenen Programms ist, können Parameter übergeben werden, und sie kann einen ganzzahligen Parameter vom Typ int im Bereich zwischen -32768 bis +32767 an das Betriebssystem zurückgeben. Da die Rückgabe, wie alle Rückgaben bei Funktionen funktioniert, soll sie hier nicht weiter besprochen werden. Die Übergabeparameter müssen die folgend genannten Typen besitzen und zudem in der dargestellten Reihenfolge angegeben werden. Durch die Angabe von (void) können sie unterdrückt werden. | ||
int main (int argc, char* argv[], char* env[]){ .. }
|
||
| Es ist möglich von hinten nach vorne schreitend, Parameter wegzulassen, jedoch dürfte das nur für den Parameter char* env[], wirklich Sinn machen. Da env[], die Umgebungsvariablen des Systems enthält, diese aber nur selten benötigt werden, dürfte der typische Aufruf von main() mit Parametern wie folgt aussehen .. | ||
int main (int argc, char* argv[]) |
||
|
Die
Übergabeparameter
int argc Dieser Parameter muss nicht von aussen gefüllt werden, sondern wird durch das Betriebssystem generiert. Der Integer gibt an, wieviele Einträge in den Variablen argv[] übergeben werden. char* argv[] Hier liegt ein Array von Strings vor, deren Anzahl in argc angegeben ist. Seit DOS 3.0 enthält .. argv[0] die vollständige Pfad/Datei-Namensangabe des Programms argv[1] den ersten vom Benutzer übergebenen Paramerter argv[2] den zweiten .... argv[argc] einen leeren nullterminierten String, der das Ende der Argumentenliste darstellt. char* env Dieses Stringarray ist systemspezifisch. Es werden in der Form Variable = Wert Umgebungsparameter des Computersystems übergeben. Dieses Array endet mit einem NULL-Eintrag. Die Trennzeichen der Übergabeparameter Die Übergabeparameter ab argv[1] werden beim Aufruf des Programms.exe hinter dem Programmnamen angegeben, wie man diese von dem Formatierungsbefehl für Festplatten format.exe c:\ (Kurzform format c:\) her kennt. Bei diesem Beispiel lautet der Programmname format.exe, wobei das .exe weggelassen werden kann, weil das Betriebssystem diese Erweiterung automatisch an ein ihm unbekanntes Literal anhängt, dann folgt der Parameterstring argv[1]= "c:\" Als Trennzeichen weiterer Parameter gilt das Leerzeichen (SPACE) Beispiel eines Programmaufrufs mit Parameterübergabe meinProgramm parameter1 parameter2 parameter3 .. Die übergebenen Parameter werden vom Betriebssystem in das Array argv[] übertragen und ihre Anzahl steht in argc. (Hier würde argc = 4 lauten) Beispiel: |
||
|
|
||
|
|
// test.cpp
// --------
#pragma option -1 // erzeuge 80186 code
#include <stdio.h> // für printf()
void main(int argc, char* argv[], char* env[])
{
int n=0;
printf("argc = %u\n", argc);
for (n=0; n<=argc; n++){
printf("argv[%u]= %s\n", n, argv[n]);
}
for (n=0; env[n]!=NULL; n++) {
printf("env[%u]= %s\n", n, env[n]);
}
}
|
|
|
|
|
|
| Wird das obige Programm mit dem Namen: test.exe auf einem PC oder IPC@CHIP Webserver mit den Parametern www.GoBlack.de und dESy-Rechner gestartet, ergeben sich die nachfolgend abgebildeten Ausgaben. Aufruf: test.exe www.GoBlack.de dESµRechner Die Umgebungsvariable 87=NO sagt bei IPC@CHIP an, dass es auf diesem Rechner keinen 80x87 numerischen Coprozessor gibt. | ||
|
||
|
|
.de