OVH Cloud OVH Cloud

fonction exit(EXIT_FAILURE);

12 réponses
Avatar
david.remacle
Bonjour/bonsoir,

J'ai ouvert un pdf sur les sockets windows et linux (c'est juste pour
l'avoir lorsque j'aurai a jouer avec les sockets).

Et là je vois ceci :

exit(EXIT_FAILURE);

Quel est l'intérêt d'utiliser cela à la place d'un exit(0); ?

Est-ce que cela change quelque chose d'important lors de la compilation
du programme ?

Est-ce mieux de l'utiliser alors en lieu et place de return(0) ?

voici l'extrait du code un peu plus complet

hostinfo = gethostbyname(hostname);
if (hostinfo == NULL)
{
fprintf(stderr, "Unknown host %s.\n", hostname);
exit(EXIT_FAILURE);
}
Merci de m'avoir lu.

2 réponses

1 2
Avatar
espie
In article <j03g0r$fcb$,
Antoine Leca wrote:
Maintenant, si ton style de programmation (ou les normes de style que
l'on te demande de suivre) vont dans le sens d'utiliser 0 pour signifier
faux ou perdu! (dans la ligne générale du langage C), utiliser
exit(EXIT_SUCCESS) plutôt que return 0 / exit(0) peut être une bonne
option pour la lisibilité générale.



Ma guideline perso:
- si c'est cense etre portable: EXIT_SUCCESS/EXIT_FAILURE
- si c'est cense faire du POSIX: exit(0);
Quand on aura autre chose qu'un exit(0), souvent le code retourne sera
specifie quelque part, ou bien ca presentera un interet de le choisir.

Attention a l'idiome (faux) suivant:

int bad = 0;

...
if (problem)
bad++;


exit(bad);

qui ne va marcher correctement que si bad % 256 != 0...
Avatar
Antoine Leca
Marc Espie écrivit :
Ma guideline perso:
- si c'est cense etre portable: EXIT_SUCCESS/EXIT_FAILURE
- si c'est cense faire du POSIX: exit(0);
Quand on aura autre chose qu'un exit(0), souvent le code retourne sera
specifie quelque part, ou bien ca presentera un interet de le choisir.



Oui, c'est logique, et plus détaillé que ce que j'avais décrit.

Ce que voulais souligner, c'est l'importance d'avoir une référence
(norme de style ou autre) pour ce genre de chose. Parce que la norme C,
elle, ne fixe pas de règle pour associer une signification spécifique à
chaque formulation (comme en témoigne la question originale.)


Antoine
1 2