Programação C
Autor: Verdade @bsoluta Data: 15/out./2005
Formato: html
- O que a função main() deve retornar?
O padrão ANSI/ISO C especifica que a função main()
deve ser declarada em uma das seguintes formas:
int main (void);
ou
int main (int argc, char **argv);
Nos dois casos o tipo de retorno é int e a
função main deve retornar int ou chamar a
função de bibliotéca exit quando o
programa termina. O C++ possui requerimento semelhante.
Uma vez que o ambiente de tempo de execução (runtime)
assume que main retorna um int, a
declaração de main com qualquer outro tipo de
retorno, inclusive void, é um convite ao erro. O
compilador, provavelmente ira compilar o programa, uma vez que o
padrão ANSI não requer que ele falhe, mas o comportamento
do programa é, em termos do padrão, indefinido, ou seja,
qualquer coisa pode ocorrer. Este é o motivo que o GCC emite um
alerta se utilizarmos a opção -Wall no momento da
compilação.
Resulmindo, o uso de void main não é seguro e
pode, potencialmente, causar efeitos colaterais no programa, desta
forma é uma boa prática evitar esta
construção.
Cabe observar que o padrão C++, difrentemente do padrão
C, explicitamente proibe a construção void main(),
e claramente define que se o fim de mai for alcançado
sem encontrar um returno será automaticamente retornado
zero ( return 0;). Quando um programa C++ é compilado com
GCC, automaticamente é gerado um código de retorno zero
na função mais, caso o programador deixa a mesma
sem código de retorno.
http://www.absoluta.org
---oOo--- verdade@absoluta.org
Copyright © 1998 - 2006 Verdade
@bsoluta