• [^] # Re: Petites precisions

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

    > c'est bien le compilateur (ou le front-end, en tout cas c'est pas la lib) qui a la charge de convertir ce 'null pointer constant' en 'null pointer'.

    Mouaif...
    J'ai beaucoup codé en C (plus actuellement mais je vais m'y remettre) et j'ai jamais vu un compilateur traiter différement NULL ou "(void*)0" ou "(void*)1" ou "(void*)29898".

    Exemple :
    tmp1.c :
    #include <stdio.h>
    int main(void) {
    char *p = NULL ;
    printf("%c\n", *p) ;
    return 0 ;
    }

    tmp2.c :
    #include <stdio.h>
    int main(void) {
    char *p = (char *)2 ;
    printf("%c\n", *p) ;
    return 0 ;
    }

    gcc -o tmp1 tmp1.c
    gcc -o tmp2 tmp2.c
    cmp -l tmp1 tmp2
    900 0 2

    Aucun traitement particulier n'est fait pour NULL et ça "Segmentation fault" de la même façon (normal).
    Tu peux essayer d'autres exemples, NULL ou (void *)0 ou 0 est traité comme un pointeur "normal".