Um nível superior const
em um argumento formal não faz parte do tipo de função. Você pode adicioná-lo ou removê-lo como quiser: isso afeta apenas o que você pode fazer com o argumento na implementação da função.
Portanto, argc
você pode adicionar livremente um const
.
Mas para argv
você não pode fazer os dados de caractere const
sem, portanto, alterar a assinatura da função. O que significa que não é uma das main
assinaturas de função padrão e não terá que ser reconhecida como uma main
função. Portanto, não é uma boa ideia.
Um bom motivo para não usar os main
argumentos padrão em programas que não sejam de brinquedo é que no Windows eles não podem representar argumentos de programa reais, como nomes de arquivo com caracteres internacionais. Isso ocorre porque no Windows eles são codificados por convenção muito forte como Windows ANSI. No Windows, você pode implementar algum recurso de acesso de argumento mais portátil em termos da GetCommandLine
função API.
Resumindo, nada impede que você adicione const
a argc
, mas a maior utilidade const
em argv
forneceria uma main
função não padrão , muito provavelmente não reconhecida como tal. Felizmente (de uma forma irônica), há boas razões para não usar os main
argumentos padrão para código sério portátil. Simplesmente, para a prática, eles suportam apenas ASCII antigo, com apenas letras do alfabeto inglês.
argc
comoconst
.