• [^] # Re: Petites precisions

    Posté par . En réponse au journal J'adore Linus. Évalué à 5.

    Juste aussi une petit précision.

    Globalement ça rend le code plus lisible.
    Mais dans certains cas on ne peut pas utiliser '0' à la place de 'NULL'.
    Typiquement les fonctions avec un nombre variable de paramètres (traité avec varargs).
    toto("coucou : %p, %s\n", 0, "tralala") ;
    est différent de :
    toto("coucou : %p, %s\n", NULL, "tralala") ; # NULL ou "(void *)0"

    Avec '0', sur la pile il y a :
    - char *
    - int
    - char *
    alors que la fonction toto() fait comme s'il y avait :
    - char *
    - void *
    - char *

    Si sizeof(int) != sizeof(void *) (typiquement le cas sur machine 64 bits), des problèmes sont à prévoir.

    J'ai ignoré la promotion faite en C mais pas en C++.