déréférencement du pointeur type-punned brisera les strictes d'aliases
Bonjour,
Voici un code que j'ai trouvé sur le net pour calculer rapidement la racine carré :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| inline float CMathFct::squareRoot(float number)
{
long i;
float x, y;
const float f = 1.5F;
x = number * 0.5F;
y = number;
i = * ( long * ) &y; //warning ici
i = 0x5f3759df - ( i >> 1 );
y = * ( float * ) &i; //warning ici
y = y * ( f - ( x * y * y ) );
y = y * ( f - ( x * y * y ) );
return number * y;
} |
Quand je compile ce code avec l'option -O2 de g++, tout se passe bien mais quand je compile avec l'option -O3, j'ai ce warning :
"attention : déréférencement du pointeur type-punned brisera les strictes d'aliases"
Comment faire pour ne plus l'avoir ? Merci