Condividi tramite


Definizioni di argomenti

Gli argomenti nel prototipo

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

consentono di eseguire l'utile analisi della riga di comando di argomenti e, facoltativamente, di accedere alle variabili di ambiente. Le definizioni degli argomenti sono le seguenti:

  • argc
    Un intero contenente il numero di argomenti che seguono in argv. Il parametro argc è sempre maggiore di o uguale a 1.

  • argv
    Una matrice di stringhe con terminazione null che rappresentano gli argomenti della riga di comando immessi dall'utente del programma. Per convenzione, argv**[0]** è il comando con cui il programma viene richiamato, argv**[1]** è il primo argomento della riga di comando e così via fino a argv**[argc]**, che è sempre NULL. Per informazioni sull'eliminazione dell'elaborazione della riga di comando, vedere Personalizzazione dell'elaborazione della riga di comando.

    Il primo argomento della riga di comando è sempre argv**[1]** e l'ultimo è argv**[argc - 1]**.

    Nota

    Per convenzione, argv[0] è il comando con cui il programma viene richiamato. Tuttavia, è possibile generare un processo utilizzando CreateProcess e, se si utilizza sia il primo che il secondo argomento, (lpApplicationName e lpCommandLine), argv[0] non può essere il nome eseguibile; utilizzare GetModuleFileName per recuperare il nome eseguibile e il relativo percorso completo.

Sezione specifica Microsoft

  • envp
    La matrice envp, che è un'estensione comune in molti sistemi UNIX, viene utilizzata in Microsoft C++. È una matrice di stringhe che rappresentano le variabili impostate nell'ambiente dell'utente. Questa matrice viene terminata da una voce NULL. Può essere dichiarata come matrice di puntatori a char (char *envp[ ]) o come puntatore a puntatori a char (char ** envp**). Se il programma utilizza wmain anziché main, utilizzare il tipo di dati wchar_t anziché char. Il blocco di ambiente viene passato a main e wmain è una copia "bloccata" dell'ambiente corrente. Se successivamente si modifica l'ambiente tramite una chiamata a putenv o a _wputenv, l'ambiente corrente (come restituito da getenv/_wgetenv** e la variabile _wenviron / _environ) cambia, ma il blocco che fa riferimento a envp rimane invariato. Per informazioni sull'eliminazione dell'elaborazione dell'ambiente, vedere Personalizzazione dell'elaborazione della riga di comando. Questo argomento è compatibile con ANSI in C, ma non in C++.

Esempio

Nell'esempio riportato di seguito viene illustrato come utilizzare gli argomenti argc, argv e envp per main:

// 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";
    }
}

Vedere anche

Riferimenti

main: avvio del programma