• [^] # Re: volatile ?

    Posté par (site web personnel) . En réponse au journal C23: un memset_explicit() qui carbure. Évalué à 3.

    // https://en.cppreference.com/w/c/string/byte/memset
    // void *memset( void *dest, int ch, size_t count );
    int
    main(void)
    {
     volatile char tmp[16];
     scanf("%15s", tmp);
     memset(tmp, 0, sizeof (tmp));
    }

    Ben justement. Dans le prototype de memset, dest n’est pas déclaré en volatile et toi même tu ne fais pas d’I/O ou de modification de la variable après le scanf. Du coup, ça ne me parait pas aberrant que le compilateur supprime un appel de fonction qui manifestement ne fait rien.

    Mais ça fait longtemps que j’ai pas fait de C et je suis preneur de tout pointeur vers la standard qui permettrai de trancher le débat dans un sens ou l’autre.