In molti IDE e compilatori C++, quando genera la funzione principale per voi, appare così:
int main(int argc, char *argv[])
Quando codifico C++ senza un IDE, solo con un compilatore a riga di comando, digito:
int main()
senza alcun parametro. Cosa significa questo, ed è vitale per il mio programma?
argv
e argc
sono come gli argomenti della linea di comando sono passati a main()
in C e C++.
argc
sarà il numero di stringhe puntate da argv
. Questo sarà (in pratica) 1 più il numero di argomenti, poiché praticamente tutte le implementazioni aggiungeranno il nome del programma all'array.
Le variabili sono chiamate argc
(conteggio degli argomenti) e argv
(vettore di argomenti) per convenzione, ma possono avere qualsiasi identificatore valido: int main(int num_args, char** arg_strings)
è ugualmente valido.
Possono anche essere omessi del tutto, ottenendo int main()
, se non si intende processare argomenti della linea di comando.
Provate il seguente programma:
#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;
}
}
Eseguendolo con ./test a1 b2 c3
si otterrà
-- lingua: lang-none -->
Have 4 arguments:
./test
a1
b2
c3
argc
è il numero di argomenti passati al tuo programma dalla linea di comando e argv
è l'array di argomenti.
Puoi fare un ciclo attraverso gli argomenti conoscendone il numero come:
for(int i = 0; i < argc; i++)
{
// argv[i] is the argument at index i
}
I parametri di main
rappresentano i parametri della linea di comando forniti al programma quando è stato avviato. Il parametro argc
rappresenta il numero di argomenti della linea di comando, e char *argv[]
è un array di stringhe (puntatori di caratteri) che rappresentano i singoli argomenti forniti sulla linea di comando.