Il est intéressant de noter que j'ai vérifié cela sur une de mes applications et j'ai obtenu 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'undef'ing dans les _USE_MATH_DEFINES
et n'a rien trouvé.
Donc j'ai déplacé le
#define _USE_MATH_DEFINES
#include <cmath>
pour être la première chose dans mon dossier (je n'utilise pas de PCH, donc si vous le faites, vous devrez l'avoir après les #include "stdafx.h"
) et soudain, il compile parfaitement.
Essayez de le déplacer plus haut sur la page. Je ne vois pas du tout pourquoi cela poserait problème.
Modifier : J'ai compris. Le site #include <math.h>
se produit dans les gardes de l'en-tête de cmath. Cela signifie que quelque chose de plus haut dans la liste des #includes inclut 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 que vous #define _USE_MATH_DEFINES
avant d'inclure quoi que ce soit d'autre. J'espère que cela vous a éclairci la situation :)
A défaut, il suffit d'inclure math.h
vous utilisez un C/C++ non standard comme cela a déjà été souligné :)
Edit 2 : Ou comme David le fait remarquer dans les commentaires, créez simplement une constante qui définit la valeur et vous aurez quelque chose de plus portable de toute façon :)
0 votes
Vos fichiers sources sont-ils .c ou .cpp ?
1 votes
Suisse : cela ne devrait pas avoir d'importance ici.
0 votes
Très étrange... Je peux confirmer que j'ai le même problème avec VS2010 ... je cherche ce qui empêche la définition de passer ... il doit être undef'd quelque part ... mais je n'arrive pas à trouver où.
0 votes
Avec x86, il se plaindra de l'erreur C2065. Avec x64, il n'y a pas d'erreur.