Enviado em 21/02/2023 - 21:30h
alexabolada escreveu:
A diferença semântica entre as declarações ?int main()? e ?int main(void)? é que a primeira aceita argumentos enquanto a segunda não aceita. No C, se a declaração ?int main()? é omitida, é assumido que a função aceitará 0 argumentos; já no C++, se a declaração ?int main()? é omitida, é assumido que a função aceita ?argc? e ?argv? como argumentos padrão. Em ambos os casos, a função ?main()? pode ser chamada sem argumentos quando a declaração ?int main(void)? é usada (desde que seja especificamente definida). Porém, é importante notar que a linguagem C++ não suporta a declaração ?main(void)? como argumentos definidos. A informação foi coletada na documentação do compilador GNU GCC (https://gcc.gnu.org/onlinedocs/gcc/Lab-1.html).
Infelizmente, acho que essa resposta foi confusa e errônea.A diferença semântica entre as declarações ?int main()? e ?int main(void)? é que a primeira aceita argumentos enquanto a segunda não aceita. No C, se a declaração ?int main()? é omitida, é assumido que a função aceitará 0 argumentos; já no C++, se a declaração ?int main()? é omitida, é assumido que a função aceita ?argc? e ?argv? como argumentos padrão. Em ambos os casos, a função ?main()? pode ser chamada sem argumentos quando a declaração ?int main(void)? é usada (desde que seja especificamente definida). Porém, é importante notar que a linguagem C++ não suporta a declaração ?main(void)? como argumentos definidos. A informação foi coletada na documentação do compilador GNU GCC (https://gcc.gnu.org/onlinedocs/gcc/Lab-1.html).
A resposta correta é que, em C, a declaração "int main(void)" implica que a função "main" não recebe argumentos, ao passo que "int main()" significa que o compilador pode considerar que a função pode receber uma quantidade qualquer de argumentos de quaisquer tipos; já em C++, as duas declarações são completamente equivalentes, significando que a função não recebe argumentos, mas a forma "int main()" é preferível por sua brevidade. A menção a omissão de declaração é incorreta tanto em C quanto em C++ (ou então a explicação veio com erro de tradução; essa informação estava originalmente em outro idioma?).
A informação de que “C++ não suporta ‘main(void)’ como argumentos definidos” é difícil de entender. Ela também é fruto de tradução? A omissão do tipo de retorno realmente não é permitido em C++, mas tal omissão não era objeto das perguntas feitas.
Port fim, a URL indicada não é válida, e a tentativa de acesso a ela produz erro de documento não encontrado.
... Então Jesus afirmou de novo: “(...) eu vim para que tenham vida, e a tenham plenamente.” (João 10:7-10)