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çã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";
}
}