joao escreveu:No MinGW não é necessário retornar int no main. Ele apenas gera um warning, mas não gera erro.
opa! cuidado! nao passe dicas erroneas!

isso de retornar void no main eh uma mancada frequente, tem que tomar cuidado e enchergar a frente! o retorno de main eh um requisito do sistema operacional, baseado em um requisito mais basico de testar se a aplicacao falhou ou nao durante a execucao... e nao eh dificil vc ver o quanto de estrago faz ignorando main.
no unix eh comum utilizar:
if programa
then
echo sucesso
else
echo falha
fi
ou seja, qualquer aplicacao no unix pode ser usado em um teste logico em um if ou while. se vc por omissao usa void main(), sua aplicacao automaticamente passa a nao ser unix-like, causando odio e desgosto por parte dos administradores unix... por exemplo:
mkdir encontrado
for i in *
do
if grep -q valor $i
then
cp $i encontrado
fi
done
que eh uma copia condicional: ele procura uma string "valor" em todos os arquivos do diretorio corrente. se o arquivo contem esta string, o que eh feito no unix atraves do comando grep, ele retorna true e entao a copia eh feita, do contrario ele retorna false e continua o loop do for. um utilitario que nao segue essa regra basica rapidamente se torna um inutilitario
no msdos eh perfeitamente possivel fazer algo similar. de fato, eh muito comum encontrar arquivos bat com o comando if errorlevel, que permite o tratamento de falhas de um aplicativo. normalmente as pessoas no msdos sao menos gabaritadas e no lugar de fazer scripts fazem tudo na mao como os macacos. isso nao quer dizer que vc deva tratar eles como completos animais e usar isso como justificativa para omitir funcionalidades que poderiam ajudar eles a se tornar mais inteligentes (ou que possam ser usadas por pessoas inteligentes de passagem pelo sistema operacional).
no sistema operacional dos macaquinhos existe inteligencia:
http://www.computerhope.com/if.htm
afinal, eles copiaram quase tudo do unix na decada de 80 hehehe e claro, como todo mundo espera, o mingw eh apenas um compilador de unix q roda num shell de unix... ele adora que main retorne int!
imagina se vc vai sacar dinheiro no banco e o desenvolvedor faz uma mancada no codigo que controla a saida da grana. dae para facilitar, ele faz tudo retornar void? se a saida da grana falha, para o aplicativo mestre tudo funcionou perfeitamente e ele te avisa "saque realizado com sucesso!", pq o outro programador rodou um system() e esperava que vc seguisse a regra, mas vc usou void main()
mesmo no caso mais basico, onde nao existe sistema operacional, o retorno do main, na minha opiniao, deveria ser tratado por um exception handler (caso de microcontroladores menores)...
se vc sabe q existe potencial para uma falha, pq ser omisso? nao acho que seja nem questao de preguica, visto que void tem mais letras que int, mas uma questao de conhecer melhor o potencial das coisas! vou ateh iniciar uma nova campanha educativa tipo "retornar int no main eh legal e previne doencas do coracao", "os vencedores nao precisam retornar void" e "seja livre! retorne int no main"
e soh por curiosidade, olha o topico inicial do post e compara com isso:
marcelosamsoniuk@marcelo-samsoniuks-macbook:~$ asdf; echo $?
-bash: asdf: command not found
127
que foi a forma que o make descobriu que o compilador nao estava instalado... este mundo dah voltas neh ?

hahaha