V številnih orodjih za razvoj in sestavljanje C++ je glavna funkcija, ki jo generira, videti takole:
int main(int argc, char *argv[])
Ko kodiram C++ brez IDE, samo s prevajalnikom ukazne vrstice, vnesem:
int main()
brez parametrov. Kaj to pomeni in ali je to pomembno za moj program?
argv
in argc
sta načina, kako se argumenti ukazne vrstice posredujejo ukazu main()
v C in C++.
argc
bo število nizov, na katere kaže argv
. To bo (v praksi) 1 plus število argumentov, saj bodo praktično vse implementacije predpomenile ime programa v polje.
Spremenljivki sta po dogovoru poimenovani argc
(število argumentov) in argv
(vektor argumentov), vendar jima je lahko dodeljen kateri koli veljavni identifikator: int main(int num_args, char** arg_strings)
je enako veljaven.
Lahko jih tudi v celoti izpustimo in dobimo int main()
, če ne nameravamo obdelati argumentov ukazne vrstice.
Preizkusite naslednji program:
#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;
}
}
Če ga zaženete z ./test a1 b2 c3
, se izpiše
Have 4 arguments:
./test
a1
b2
c3
argc
je število argumentov, ki jih programu posredujete iz ukazne vrstice, argv
pa je polje argumentov.
Po argumentih lahko krožite skozi zanko in poznate njihovo število na naslednji način:
for(int i = 0; i < argc; i++)
{
// argv[i] is the argument at index i
}
Parametri za main
predstavljajo parametre ukazne vrstice, ki so bili programu posredovani ob zagonu. Parameter argc
predstavlja število argumentov ukazne vrstice, parameter char *argv[]
pa je polje nizov (znakovnih kazalcev), ki predstavljajo posamezne argumente v ukazni vrstici.