È interessante notare che l'ho controllato su una mia app e ho ricevuto lo stesso errore.
Ho passato un po 'di tempo a controllare le intestazioni per vedere se c'era qualcosa di indefinito _USE_MATH_DEFINESe non ho trovato nulla.
Quindi ho spostato il file
#define _USE_MATH_DEFINES
#include <cmath>
per essere la prima cosa nel mio file (non uso PCH quindi se lo sei dovrai averlo dopo il #include "stdafx.h") e improvvisamente si compila perfettamente.
Prova a spostarlo più in alto nella pagina. Totalmente incerto sul motivo per cui ciò potrebbe causare problemi.
Modifica : capito. Si #include <math.h>verifica all'interno delle protezioni dell'intestazione di cmath. Ciò significa che qualcosa di più in alto nell'elenco di #include è incluso cmathsenza il valore #definespecificato. math.hè specificamente progettato in modo che tu possa includerlo di nuovo con quella definizione ora modificata per aggiungere M_PIecc. Questo NON è il caso di cmath. Quindi devi assicurarti #define _USE_MATH_DEFINESdi includere qualsiasi altra cosa. Spero che questo ti renda tutto più chiaro :)
In caso contrario, math.hsi utilizza solo C / C ++ non standard come già sottolineato :)
Modifica 2 : O, come sottolinea David nei commenti, renditi una costante che definisce il valore e hai comunque qualcosa di più portatile :)