elgio
(usa OpenSuSE)
Enviado em 19/05/2008 - 09:18h
Já disseram, mas convém reforçar.
void main é incorreto. Trata-se de um artifício usado para escapar dos avisos de "função não retornou valor".
A função main é int e mesmo que se coloque void o compilador (alguns!!!) irão compilar como int.
O fato é que o main retorna para o Sistema Operacional (normalmente. Pode retornar para outro programa no caso do uso de system por exemplo) e como tal PRECISA retornar o seu status de erro (SEMPRE!!).
Se retornar 0 - return(0) - significa SUCESSO. Executou SEM ERRROS.
Se retornar diferente de zero está retornando um código de erro que poderá ser tratado devidamente pelo Sistema Operacional (até no DOS tu consegue pegar isto em um CMD com if ERRORLEVEL, se não me engano).
Logo, o main RETORNA int e deve ser definido como int main.
Só que se tu define como int main precisa colocar um return para que o compilador não te diga que faltou retornar.
Principalmente quando se está aprendendo, pode ser inconveniente explicar para o aluno porque tem que usar o return, principalmente se for o primeiro programa da vida dele. Por isto alguns até usam a tática de usar void no aprendizado até que o aluno evolua a fim de poder, futuramente, compreender que deve ser int e não void. Alguns livros até ensinam void o que, dependendo do contexto, até pode ser aceitável (eu não gosto).
[]'s