Nós "precisamos" disso, porque é exigido por vários padrões.
Somos livres para ignorar o valor completamente, mas como é o primeiro parâmetro de main
, devemos tê-lo na lista de parâmetros. Em C ++ (e provavelmente em dialetos C não padrão), você pode simplesmente omitir o nome do parâmetro, como este snippet C ++ (fácil de converter para C):
#include <stdio.h> // C-compatible include, guarantees puts in global namespace
// program will print contents of argv, one item per line, starting from argv[0]
int main(int /*argc*/, char *argv[]) { // uncomment argc for C
//(void)argc; // uncomment statement for C
for (int i=0; argv[i]; ++i) {
puts(argv[i]);
}
return 0;
}
No C padrão, com configurações de avisos comuns, o parâmetro não utilizado gera um aviso, que pode ser corrigido por uma instrução como a (void)argc;
que faz com que o nome seja usado sem gerar nenhum código.
argc
é bom ter, porque de outra forma muitos programas precisariam percorrer os parâmetros para obter a contagem. Além disso, em muitas linguagens de programação com arrays que têm comprimento, não existe nenhum argc
parâmetro, há apenas um array com os itens.
int argc(char *argv[])
fazendo exatamente isso :-))