Definiciones de argumento
Los argumentos en el prototipo
int main( int argc[ , char *argv[ ] [, char *envp[ ] ] ] );
int wmain( int argc[ , wchar_t *argv[ ] [, wchar_t *envp[ ] ] ] );
permite el análisis adecuado de la línea de comandos de argumentos y, obtenga acceso opcionalmente a las variables de entorno.Las definiciones de argumento son los siguientes:
argc
Un entero que contiene el número de argumentos que siguen en argv.El parámetro argc siempre es mayor o igual que 1.argv
Una matriz de cadenas terminadas en null que representan los argumentos de la línea de comandos especificados por el usuario del programa.Por convención, argv**[0]** es el comando al que se invoca el programa, argv**[1]** es el primer argumento de la línea de comandos, etc., hasta argv**[argc]**, que siempre null.Vea Personalizar el procesamiento de la línea de comandos para obtener información sobre la supresión del procesamiento de la línea de comandos.El primer argumento de la línea de comandos es siempre argv**[1]** y el último es argv**[argc – 1]**.
[!NOTA]
Por convención, argv[0] es el comando al que se invoca el programa.Sin embargo, es posible todos generar un proceso mediante CreateProcess y utiliza el primer y segundo argumentos (lpApplicationName y lpCommandLine), argv[0] puede no ser el nombre ejecutable; uso GetModuleFileName de recuperar el nombre ejecutable, y la ruta de acceso válida.
Específicos de Microsoft
- envp
La matriz envp , que es una extensión común en muchos sistemas UNIX, se utiliza en Microsoft C++.Es una matriz de cadenas que representan las variables establecidas en el entorno de usuario.Esta matriz termina con una entrada null .Puede declararse como una matriz de punteros a *envp char (char []) o como puntero a punteros a char (char ** envp**).Si el programa utiliza wmain en lugar main, utilice el tipo de datos wchar_t en lugar char.El bloque de entorno que se pasa a main y wmain es una copia “propiedad” del entorno actual.Si se cambia el entorno mediante una llamada a putenv o a _wputenv, el entorno actual (si devuelve por getenv/_wgetenv** y la variable _environ/de _wenviron ) variará, sólo el bloque indicado por el envp no cambiará.Vea Personalizar el procesamiento de la línea de comandos para obtener información sobre la supresión del procesamiento del entorno.Este argumento es compatible con ANSI en C, pero no en C++.
Ejemplo
El ejemplo siguiente se muestra cómo utilizar argc, argv, y los argumentos 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";
}
}