Re: exit ou return

Page principale

Répondre à ce message
Auteur: Nicolas Tripon
Date:  
À: guilde
Sujet: Re: exit ou return
> Inexact: On peut très bien avoir le prototype suivant:
>
> void main(int argc, char *argv[]);
>
> Auquel cas, exit(val) est le seul moyen de réccupérer le code d'erreur
> (présent dans $? sous bash, sh, zsh & prédécesseurs/dérivés[1]). Pour
> mémoire, les conventions du shell (à utiliser avec exit() ou return
> depuis le main()) sont l'opposé du C/C++:


En ANSI/ISO C, main() peut prendre deux formes :

int main(void),
int main(int, char **) ;

En pre-ANSI C, le type 'void' n'existait pas : on n'aurait pas pu déclarer
void main(int argc, char *argv[]) : dans aucun des cas 'void main()' n'est
correct.
Dans le cas 'main(void)', le compilateur assignera le type 'int' à main().
Pour faire de la bonne programmation en C, un document incontournable :
le C FAQ, posté régulièrement dans comp.lang.C.

> - 0: pas d'erreur
>
> - >0: erreur (on peut retourner errno)
>
> - <0: Déconseillé, vu la difficulté de certains shells (csh) à gérer
> les nombres relatifs (en dehors de bc, bien sur...)


exit(int) permet de retourner un int non-signé de huit bits ;
essayez exit(-1), exit(256), return -1, return 256.
-NT