Definice argument
Argumenty v prototypu
int main( int argc[ , char *argv[ ] [, char *envp[ ] ] ] );
int wmain( int argc[ , wchar_t *argv[ ] [, wchar_t *envp[ ] ] ] );
umožňují pohodlné příkazového řádku analýzy argumenty a případně přístup k proměnné prostředí.Definice argumentu jsou:
argc
Celé číslo, které obsahuje počet argumentů, které následují v argv.argc Parametr je vždy větší nebo rovna 1.argv
Pole řetězců zakončený představující argumenty příkazového řádku zadané uživatelem programu.Úmluvou argv**[0]** příkaz, ke kterému je vyvolán program, argv**[1]** je první argument příkazového řádku a tak dále až do argvargc**[]**, který je vždy NULL.Viz Přizpůsobení zpracování příkazového řádku informace o potlačení zpracování příkazového řádku.První argument příkazového řádku je vždy argv**[1]** a poslední je argvargc – 1**[]**.
[!POZNÁMKA]
Podle úmluvy se argv[0] příkaz, ke kterému je vyvolán program.Je však možné spustit proces pomocí CreateProcess a pokud použijete první a druhé argumenty (lpApplicationName a lpCommandLine), argv[0] nemusí být název spustitelného souboru; použít GetModuleFileName načíst název spustitelného souboru a jeho úplnou cestu.
Microsoft specifické
- envp
envp Pole, které je společné rozšíření v systémech UNIX, je používán Microsoft C++.Je pole řetězců představující proměnných v prostředí uživatele.Toto pole je ukončena NULL položka.Mohou být deklarovány jako ukazatele na pole znak (char * [envp]) nebo jako ukazatel na ukazatele na znak (char ** envp**).Pokud váš program používá wmain namísto hlavní, použít wchar_t typ dat, nikoli char.Blok prostředí předán hlavní a wmain "zmrazené" kopii aktuálního prostředí.Pokud později změníte prostředí prostřednictvím volání putenv nebo _wputenv, aktuální prostředí (jako vrácené getenv/_wgetenv** a _environ/ _wenviron proměnné) změnit, ale odkazuje envp bloku se nezmění.Viz Přizpůsobení zpracování příkazového řádku informace o potlačení zpracování prostředí.Tento argument je ANSI C, ale ne v C++ kompatibilní.
Příklad
Následující příklad zobrazuje způsob použití argc, argv, a envp argumenty hlavní:
// 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";
}
}