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_DEFINES
festzustellen, 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 cmath
ohne das #define
angegebene enthalten ist. math.h
wurde speziell entwickelt, damit Sie es wieder in die Definition aufnehmen können, die jetzt geändert wurde, um sie hinzuzufügen M_PI
usw. Dies ist bei NICHT der Fall cmath
. Sie müssen sich also vergewissern, #define _USE_MATH_DEFINES
bevor Sie etwas anderes hinzufügen. Hoffe das klärt es für dich auf :)
Andernfalls verwenden math.h
Sie 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 :)