Em muitos C++ IDE's e compiladores, quando ele gera a função principal para você, ele se parece com isto:
int main(int argc, char *argv[])
Quando eu codifico C++ sem um IDE, apenas com um compilador de linha de comando, eu digito:
int main()
sem quaisquer parâmetros. O que significa isto, e é vital para o meu programa?
argv' e 'argc' são como os argumentos de linha de comando são passados para main()
em C e C++.
O 'argc' será o número de cordas apontadas pelo 'argv'. Este será (na prática) 1 mais o número de argumentos, já que virtualmente todas as implementações prependem o nome do programa para o array.
As variáveis são nomeadas argc
(argument count) e argv
(argument vector) por convenção, mas elas podem receber qualquer identificador válido: int main(int num_args, char*** arg_strings)
é igualmente válido.
Eles também podem ser omitidos completamente, produzindo int main()
, se você não pretende processar argumentos de linha de comando.
Tente o seguinte programa:
#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;
}
}
Executando-o com ./test a1 b2 c3
irá sair
Have 4 arguments:
./test
a1
b2
c3
O argc
é o número de argumentos sendo passados para o seu programa a partir da linha de comando e o argv
é o conjunto de argumentos.
Você pode passar os argumentos sabendo o número deles:
for(int i = 0; i < argc; i++)
{
// argv[i] is the argument at index i
}
Os parâmetros para main
representam os parâmetros de linha de comando fornecidos ao programa quando ele foi iniciado. O parâmetro argc
representa o número de argumentos da linha de comando, e char *argv[]
é um array de strings (apontadores de caracteres) representando os argumentos individuais fornecidos na linha de comando.