• [^] # Re: Petites precisions

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

    > http://www.vmunix.com/~gabor/c/draft.html(...)

    Merci, je bookmark :-)

    > sizeof(toto *) != sizeof (void *)

    Non. sizeof(int*), sizeof(toto*), sizeof(n_importe_quoi *) est égale à sizeof(void *).

    C'est pour celà que des trucs tordus comme ci-dessous sont possibles :
    typedef struct list * plist ;
    static size_t taille = sizeof (struct list *) ;
    static size_t taille2 = sizeof (struct list) ; // invalide => invalid application of `sizeof' to an incomplete type
    static size_t taille3 = sizeof (plist) ;
    struct list {
    struct list * prec ;
    struct list * next ;
    data ;
    } ; // la taille de "struct list" n'est connu que ici.
    static size_t taille4 = sizeof (struct list) ; // valide => le taille est maintenant connue.

    Ceci marche car "struct list *" est connu en taille avant même sa déclaration et la taille est sizeof (void *) (ou (n_importe_quoi *)).

    par contre sur certains plate forme (64 bits notament) sizeof(0) != sizeof(void *).