I mange C++ IDE'er og kompilatorer ser hovedfunksjonen slik ut når den genereres for deg:
int main(int argc, char *argv[])
Når jeg koder C++ uten et IDE, bare med en kommandolinjekompilator, skriver jeg:
int main()
uten noen parametere. Hva betyr dette, og er det viktig for programmet mitt?
argv
og argc
er hvordan kommandolinjeargumenter sendes til main()
i C og C++.
argc
vil være antallet strenger som argv
peker på. Dette vil (i praksis) være 1 pluss antall argumenter, ettersom så godt som alle implementeringer vil legge til navnet på programmet i matrisen.
Variablene heter argc
(argument count) og argv
(argument vector) per konvensjon, men de kan gis en hvilken som helst gyldig identifikator: int main(int num_args, char** arg_strings)
er like gyldig.
De kan også utelates helt, noe som gir int main()
, hvis du ikke har til hensikt å behandle kommandolinjeargumenter.
Prøv følgende 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;
}
}
Hvis du kjører det med ./test a1 b2 c3
, får du følgende resultat
Have 4 arguments:
./test
a1
b2
c3
argc
er antallet argumenter som sendes inn i programmet fra kommandolinjen, og argv
er argumentrekken.
Du kan løpe gjennom argumentene for å finne ut hvor mange de er:
for(int i = 0; i < argc; i++)
{
// argv[i] is the argument at index i
}
Parametrene til main
representerer kommandolinjeparametrene som ble gitt til programmet da det ble startet. Parameteren argc
representerer antall kommandolinjeargumenter, og char *argv[]
er en matrise av strenger (tegnpekere) som representerer de enkelte argumentene på kommandolinjen.