Fait intéressant, j'ai vérifié cela sur une de mes applications et j'ai eu la même erreur.
J'ai passé un certain temps à vérifier les en-têtes pour voir s'il y avait quelque chose d'indéfaillable _USE_MATH_DEFINES
et je n'ai rien trouvé.
Alors j'ai déplacé le
#define _USE_MATH_DEFINES
#include <cmath>
pour être la première chose dans mon fichier (je n'utilise pas de PCH donc si vous l'êtes vous devrez l'avoir après le #include "stdafx.h"
) et du coup il se compile parfaitement.
Essayez de le déplacer plus haut sur la page. Je ne sais absolument pas pourquoi cela causerait des problèmes.
Edit : compris. Le #include <math.h>
se produit dans les gardes d'en-tête de cmath. Cela signifie que quelque chose de plus haut dans la liste des #includes est inclus cmath
sans le #define
spécifié. math.h
est spécifiquement conçu pour que vous puissiez l'inclure à nouveau avec cette définition maintenant modifiée pour ajouter M_PI
etc. Ce n'est PAS le cas avec cmath
. Vous devez donc vous assurer #define _USE_MATH_DEFINES
avant d'inclure quoi que ce soit d'autre. J'espère que cela clarifie les choses pour vous :)
À défaut d'inclure simplement, math.h
vous utilisez du C / C ++ non standard comme déjà indiqué :)
Edit 2 : Ou comme David le souligne dans les commentaires, créez-vous une constante qui définit la valeur et vous avez de toute façon quelque chose de plus portable :)