Comme nous le savons tous, le code suivant va être optimisée par l'raisonnable compilateurs:
const int a = 3;
const int b = 42;
if (a == b)
{
do_something();
}
Si les deux constantes sont les mêmes, l' if
est omis, la fonction appelle toujours, si elles sont différentes, l'ensemble du bloc est omis.
Cependant, il peut y avoir des situations où il est important de ne PAS optimiser ce code, que le programme lui-même peut être modifié avant d'être exécuté. E. g. le binaire se trouve dans la mémoire flash et peut être consulté par un programme externe, et bien sûr les adresses des deux const
s sont fixes. (a un sens dans l'embarqué).
Je suis en train de penser à l'aide de #pragma
, mais qui ne fait pas partie de la norme.
Un autre moyen serait d'utiliser const volatile
. C'est que la garantie de travailler sur tous conformes à la norme compilateurs?