In veel C++ IDE's en compilers, wanneer het de hoofdfunctie voor je genereert, ziet het er als volgt uit:
int main(int argc, char *argv[])
Wanneer ik C++ codeer zonder een IDE, gewoon met een command line compiler, typ ik:
int main()
zonder enige parameters. Wat betekent dit, en is het van vitaal belang voor mijn programma?
argv
en argc
zijn de manier waarop command line argumenten worden doorgegeven aan main()
in C en C++.
argc
zal het aantal strings zijn waarnaar argv
verwijst. Dit zal (in de praktijk) 1 plus het aantal argumenten zijn, omdat vrijwel alle implementaties de naam van het programma aan de array zullen toevoegen.
De variabelen worden standaard argc
(argument count) en argv
(argument vector) genoemd, maar ze kunnen elke geldige identifier krijgen: int main(int num_args, char** arg_strings)
is net zo geldig.
Ze kunnen ook helemaal weggelaten worden, wat resulteert in int main()
, als je niet van plan bent om commandoregel argumenten te verwerken.
Probeer het volgende programma eens:
#include <iostream>
int main(int argc, char** argv) {
std::cout << "Have " << argc << " arguments:" << std::endl;
for (int i = 0; i < argc; ++i) {
std::cout << argv[i] << std::endl;
}
}
Het uitvoeren met ./test a1 b2 c3
zal uitvoer geven
Have 4 arguments:
./test
a1
b2
c3
argc
is het aantal argumenten dat in uw programma wordt doorgegeven vanaf de commandoregel en argv
is de array van argumenten.
Je kunt door de argumenten lopen om het aantal te weten te komen zoals:
for(int i = 0; i < argc; i++)
{
// argv[i] is the argument at index i
}
De parameters van main
vertegenwoordigen de command line parameters die aan het programma zijn meegegeven toen het werd gestart. De parameter argc
vertegenwoordigt het aantal command line argumenten, en char *argv[]
is een array van strings (character pointers) die de individuele argumenten vertegenwoordigen die op de command line zijn gegeven.