Argument-Definitionen

Die Argumente im Prototyp

int main( int argc[ , char *argv[ ] [, char *envp[ ] ] ] );
int wmain( int argc[ , wchar_t *argv[ ] [, wchar_t *envp[ ] ] ] );

Sie können einfache Befehlszeilenanalyse von Argumenten und greifen Sie optional auf Umgebungsvariablen zu.Die Argumentdefinitionen sind, wie folgt:

  • argc
    Eine ganze Zahl, die die Anzahl der Argumente enthält, die in argv folgen.Der argc-Parameter ist immer größer oder gleich 1.

  • argv
    Ein Array auf NULL endende Zeichenfolge, die die Befehlszeilenargumente vom Benutzer eingegeben wurde des Programms darstellen.Gemäß der Konvention ist argv**[0]** der Befehl, mit dem das Programm aufgerufen wird, argv**[1]** ist das erste Befehlszeilenargument usw. bis argv**[argc]**, das immer NULL ist.Siehe Anpassen des Befehlszeilen-Verarbeitens zu Informationen über das Unterdrücken des Befehlszeilenverarbeitens.

    Das erste Befehlszeilenargument ist immer argv**[1]** und das letzte von ist argv**[argc - 1]**.

    HinweisHinweis

    Gemäß der Konvention ist argv[0] der Befehl, mit dem das Programm aufgerufen wird.Allerdings kann es ist möglich, einen Prozess mit CreateProcess und wenn Sie die erste und zweite Argumente (lpApplicationName und lpCommandLine) verwenden, argv[0] zu erzeugen nicht der Name der ausführbaren; Verwendung GetModuleFileName, ausführbaren Namen abzurufen und ihr vollqualifizierter Pfad.

Microsoft-spezifisch

  • envp
    Das envp Array, das eine allgemeine Erweiterung in vielen UNIX-Systemen ist, ist in Microsoft C++ verwendet.Es ist ein Zeichenfolgenarray, das die Variablen darstellt, die in der Anwenderkonfiguration festgelegt werden.Dieses Array wird durch einen NULL Eintrag beendet.Er kann als Array von Zeigern auf char (char *envp[ ]) oder als Zeiger auf den Zeiger zu char (char deklariert werden envp **).Wenn das Programm wmain anstelle main verwendet, verwenden Sie den wchar_t Datentyp anstelle char.Der Umgebungsblock weitergegebenen zu main und wmain ist eine "eingefrorene" Kopie der aktuellen Umgebung.Wenn Sie anschließend die Umgebung über einen Aufruf putenv oder zu _wputenv ändern, ändert sich die aktuelle Umgebung (wie durch getenv/_wgetenv und die _environ/ _wenviron-Variable zurückgegeben), der Block, der an den envp gezeigt wird, ändert sich nicht.Siehe Anpassen des Befehlszeilen-Verarbeitens zu Informationen über das Unterdrücken des Umgebungsverarbeitens.Dieses Argument ist, das in ANSI C, jedoch nicht in C++ kompatibel ist.

Beispiel

Im folgenden Beispiel wird gezeigt, wie argc, argv und envp-Argumente zu main verwendet:

// argument_definitions.cpp
// compile with: /EHsc
#include <iostream>
#include <string.h>

using namespace std;
int main( int argc, char *argv[], char *envp[] ) {
    int iNumberLines = 0;    // Default is no line numbers.

    // If /n is passed to the .exe, display numbered listing
    // of environment variables.

    if ( (argc == 2) && _stricmp( argv[1], "/n" ) == 0 )
         iNumberLines = 1;

    // Walk through list of strings until a NULL is encountered.
    for( int i = 0; envp[i] != NULL; ++i ) {
        if( iNumberLines )
            cout << i << ": " << envp[i] << "\n";
    }
}

Siehe auch

Referenz

Haupt-: Programm-Start