Question

Il y a plusieurs façons comment le programme de sortie en C. Certains d'entre eux reviennent à zéro ou l'erreur, en utilisant la fonction de sortie avec EXIT_SUCCESS, EXIT_FAILURE, sortie (0), sortie (1) ou d'un autre code d'erreur, abort et probablement peu plus que je ne peux pas penser maintenant.

Ma question est quelle option est la meilleure et pourquoi. Je demande ici parce que chaque fois que je demande aux programmeurs plus expérimentés cette question, il a fini comme une guerre sainte.

Était-ce utile?

La solution

Je pense que la meilleure chose est EXIT_SUCCESS de retour ou le retour d'un nombre non nul pour lequel vous avez documenté un code d'erreur ou EXIT_FAILURE si vous ne pouvez pas définir des codes d'erreur pour toutes les conditions qui pourraient vous faire échouer. Cela permettrait un programme en utilisant votre programme (dans une conduite ou une fonction batch) utiliser réellement votre code d'erreur pour déterminer quoi faire le cas échéant.

Personnellement, je ne suis pas marié aux macros qui a toujours, à chaque mise en œuvre unique sur la terre égale à 0 mais bon ce genre de commentaire que vous pouvez obtenir downvoted.

Autres conseils

Il n'y a pas « meilleur ». Si vous voulez maximiser la portabilité, vous ne pouvez utiliser trois valeurs: EXIT_SUCCESS, EXIT_FALURE et 0 (et 0 et EXIT_SUCCESS signifient la même chose). Si cela ne vous dérange pas de perdre une certaine portabilité, il est souvent utile de revenir d'autres valeurs pour indiquer pourquoi quelque chose a échoué, ou (dans certains cas) retourne une valeur non nulle, même en cas de succès pour indiquer des choses comme combien de X il trouvé, ou porter le résultat d'un calcul, etc.

En tant que tel, vous avez le choix entre la portabilité (mais surtout aux systèmes que vous probablement ne se soucient pas, VMS principalement) et la fonctionnalité sur un ensemble légèrement réduit de systèmes. Vous devez décider ce qui est plus important pour vous.

Edit: Non, ne EXIT_SUCCESS pas toujours égal à zéro - mais (au moins autant que les soins standards), les deux signifient la même chose. Il y avait au moins un compilateur de VMS, cependant que défini EXIT_SUCCESS à une valeur non nulle (VMS normalement interprété des nombres pairs comme l'échec et les nombres impairs comme succès, alors EXIT_SUCCESS a été définie pour le nombre impair approprié, et 0 a été traitée spécialement, de sorte que le système a un nombre impair quand / si vous revenez il).

Licencié sous: CC-BY-SA avec attribution
scroll top