Compartilhar via


Definições do argumento

Os argumentos no protótipo

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

permite a análise conveniente de linha de comando dos argumentos e, opcionalmente, acessá-lo a variáveis de ambiente.As definições do argumento são:

  • argc
    Um inteiro que contém a contagem dos argumentos que seguem em argv.O parâmetro de argc é sempre maior ou igual a 1.

  • argv
    Uma matriz de cadeias de caracteres NULL- terminadas que representam os argumentos de linha de comando inseridos pelo usuário do programa.Por convenção, argv**[0]** é o comando que o programa é chamado, argv**[1]** é o primeiro argumento de linha de comando, e assim por diante, até argv**[argc]**, que é sempre NULO.Consulte Personalizando o processamento de linha de comando para obter informações sobre como suprimir o processamento de linha de comando.

    O primeiro argumento de linha de comando é sempre argv**[1]** e o último é argv**[argc – 1]**.

    ObservaçãoObservação

    Por convenção, argv[0] é o comando que o programa é chamado.Em o entanto, é possível desovar um processo usando CreateProcess e se você usar o primeiro e segundo argumento (lpApplicationName e lpCommandLine), argv[0] não pode ser o nome executável; use GetModuleFileName para recuperar o nome executável, e seu caminho totalmente qualificado.

Específico da Microsoft

  • envp
    A matriz de envp , que é uma extensão comuns em muitos sistemas de UNIX, é usada no Microsoft C++.É uma matriz de cadeias de caracteres que representam as variáveis definidas no ambiente de usuário.Essa matriz é finalizada por uma entrada de NULO .Pode ser declarado como uma matriz de ponteiros para o *envp de char (char []) ou como um ponteiro para ponteiros a char (char ** envp**).se seu programa usa wmain em vez de main, use o tipo de dados de wchar_t em vez de char.O bloco de ambiente passado para main e wmain é uma cópia “congelado” de ambiente atual.Se você posteriormente alterar o ambiente através de uma chamada a putenv ou a _wputenv, o ambiente atual (como retornado por getenv/_wgetenv** e a variável de _environ/ _wenviron ) será alterado, mas o bloco apontada pelo envp não será alterado.Consulte Personalizando o processamento de linha de comando para obter informações sobre como suprimir o processamento de ambiente.Esse argumento é ANSI correspondente em C, mas não em C++.

Exemplo

O exemplo a seguir mostra como usar argc, argv, e argumentos de envp a 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";
    }
}

Consulte também

Referência

principal: inicialização do programa