È 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_DEFINES
e 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 cmath
senza il valore #define
specificato. math.h
è specificamente progettato in modo che tu possa includerlo di nuovo con quella definizione ora modificata per aggiungere M_PI
ecc. Questo NON è il caso di cmath
. Quindi devi assicurarti #define _USE_MATH_DEFINES
di includere qualsiasi altra cosa. Spero che questo ti renda tutto più chiaro :)
In caso contrario, math.h
si 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 :)