Interessanterweise habe ich dies in einer meiner Apps überprüft und den gleichen Fehler erhalten.
Ich habe eine Weile in den Headern nachgesehen, um _USE_MATH_DEFINESfestzustellen, ob etwas undefiniert war, und nichts gefunden.
Also habe ich die bewegt
#define _USE_MATH_DEFINES
#include <cmath>
um das erste in meiner Datei zu sein (ich benutze keine PCHs, wenn Sie es sind, müssen Sie es nach dem haben #include "stdafx.h") und plötzlich wird es perfekt kompiliert.
Versuchen Sie, es höher auf der Seite zu verschieben. Völlig unsicher, warum dies zu Problemen führen würde.
Edit : Hab es herausgefunden. Das #include <math.h>tritt innerhalb der Header-Wachen von cmath auf. Dies bedeutet, dass etwas weiter oben in der Liste der #includes cmathohne das #defineangegebene enthalten ist. math.hwurde speziell entwickelt, damit Sie es wieder in die Definition aufnehmen können, die jetzt geändert wurde, um sie hinzuzufügen M_PIusw. Dies ist bei NICHT der Fall cmath. Sie müssen sich also vergewissern, #define _USE_MATH_DEFINESbevor Sie etwas anderes hinzufügen. Hoffe das klärt es für dich auf :)
Andernfalls verwenden math.hSie nicht standardmäßiges C / C ++, wie bereits erwähnt :)
Edit 2 : Oder wie David in den Kommentaren betont, machen Sie sich einfach zu einer Konstante, die den Wert definiert, und Sie haben sowieso etwas Tragbareres :)