La variable volatile n'est pas normalement autorisée à être passée à memset et ne changerait pas forcément le résultat. Le compilateur retire l'appel à memset car il voit qu'il y a rien derrière qui utilise la variable. C'est un mot clé utilisé plutôt en relation avec des accès registres pour éviter des optimisations sur des variables modifiées « à l'extérieur ».
Je crois qu'en C standard pur (si on a pas memset_explicit) le mieux est de passer la variable à une fonction externe qui fait un memset derrière. Dans ce cas il est possible que le compilateur ne prenne plus trop d'initiatives sans savoir ce que la fonction fait.
[^] # Re: volatile ?
Posté par David Demelier (site web personnel) . En réponse au journal C23: un memset_explicit() qui carbure. Évalué à 4.
La variable
volatilen'est pas normalement autorisée à être passée àmemsetet ne changerait pas forcément le résultat. Le compilateur retire l'appel à memset car il voit qu'il y a rien derrière qui utilise la variable. C'est un mot clé utilisé plutôt en relation avec des accès registres pour éviter des optimisations sur des variables modifiées « à l'extérieur ».Je crois qu'en C standard pur (si on a pas
memset_explicit) le mieux est de passer la variable à une fonction externe qui fait unmemsetderrière. Dans ce cas il est possible que le compilateur ne prenne plus trop d'initiatives sans savoir ce que la fonction fait.Exemple même avec volatile
Exemple avec une fonction vite fait
AI is a mental disorder