• [^] # Re: LOGIN

    Posté par (site web personnel) . En réponse au journal Claque nostalgique : Hebdogiciel. Évalué à 2.

    [...] EXIT_SUCCESS est défini à 0. Ce n'est pas moi qui le dit, mais les gens de fclc quand j'avais fait une remarque du genre sur le newsgroup il y a quelques années.

    Très franchement je suis loin d'être surqualifié en ce qui concerne le langage C et ses diverses normes, cependant:

    • Une brève recherche a suffit a me convaincre que la norme ne donne pas de réponse définitive à la question, notamment dans les paragraphes pertinents (5.1.2.2.3 et 7.20.4.3 du C99).
    • Si la norme définit une constante EXIT_SUCCESS et une constante EXIT_FAILURE, il y a probablement une raison et le souhait de voir ces constantes utilisées.
    • Certaines architectures semblent avoir des mœurs plutôt exotiques (mais la valeur de sortie de main ou de exit est interprétée par l'implémentation pour construire un état de retour). Je cite (en anglais):

    nobody wrote:
    > 5.1.2.2.3p1 ... reaching the } that terminates the main
    `> function returns a value of 0. ...

    which is one form of returning a successful termination
    status to the invoking environment. EXIT_STATUS could
    have a value different from 0, and in fact it did on
    VAX/VMS at one point in time (the system convention was
    that even-values status returns indicated failure and
    odd-values ones success, but since there was no failure
    code 0 the C run-time system was able to convert any 0
    return into an odd value before handing it back to the
    environment).

    Pour conclure, il me semble que puisque le problème a deux solutions, une manifestement pérenne (EXIT_SUCCESS) et une autre dont la légitimité ne peut être démontrée ni infirmée par une réponse claire, tranchée et rapide, le plus sage — et le meilleur conseil à donner à des débutants, public visé par les articles de LOGIN — est d'utiliser EXIT_SUCCESS dans ses programmes.