Dans de nombreux IDE et compilateurs C++, lorsqu'ils génèrent la fonction principale pour vous, cela ressemble à ceci :
int main(int argc, char *argv[])
Lorsque je code du C++ sans IDE, juste avec un compilateur en ligne de commande, je tape :
int main()
sans aucun paramètre. Qu'est-ce que cela signifie, et est-ce vital pour mon programme ?
argv
et argc
sont la façon dont les arguments de ligne de commande sont passés à main()
en C et C++.
argc
sera le nombre de chaînes de caractères pointées par argv
. Ce sera (en pratique) 1 plus le nombre d'arguments, car pratiquement toutes les implémentations ajouteront le nom du programme au tableau.
Les variables sont nommées argc
(compte d'arguments) et argv
(vecteur d'arguments) par convention, mais on peut leur donner n'importe quel identifiant valide : int main(int num_args, char** arg_strings)
est également valable.
On peut aussi les omettre complètement, ce qui donne int main()
, si vous n'avez pas l'intention de traiter les arguments de la ligne de commande.
Essayez le programme suivant :
#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;
}
}
En l'exécutant avec ./test a1 b2 c3
, vous obtiendrez les résultats suivants
Have 4 arguments:
./test
a1
b2
c3
argc
est le nombre d'arguments passés à votre programme depuis la ligne de commande et argv
est le tableau d'arguments.
Vous pouvez boucler sur les arguments en connaissant leur nombre comme suit :
for(int i = 0; i < argc; i++)
{
// argv[i] is the argument at index i
}
Les paramètres de main
représentent les paramètres de la ligne de commande fournis au programme lorsqu'il a été lancé. Le paramètre argc
représente le nombre d'arguments de ligne de commande, et char *argv[]
est un tableau de chaînes (pointeurs de caractères) représentant les arguments individuels fournis sur la ligne de commande.