Co ciekawe, sprawdziłem to w mojej aplikacji i otrzymałem ten sam błąd.
Spędziłem trochę czasu sprawdzając nagłówki, aby zobaczyć, czy coś jest niezdefiniowane _USE_MATH_DEFINES
i nic nie znalazłem.
Więc przeniosłem
#define _USE_MATH_DEFINES
#include <cmath>
być pierwszą rzeczą w moim pliku (nie używam PCH, więc jeśli jesteś, będziesz musiał to mieć po #include "stdafx.h"
) i nagle kompiluje się idealnie.
Spróbuj przenieść go wyżej w górę strony. Zupełnie nie jestem pewien, dlaczego mogłoby to powodować problemy.
Edycja : rozgryzłem to. #include <math.h>
Zachodzi wewnątrz nagłówka cmath za strażników. Oznacza to, że coś znajdującego się wyżej na liście #includes jest włączanie cmath
bez #define
określonego. math.h
jest specjalnie zaprojektowany, aby można go było ponownie dołączyć do definicji, teraz zmieniono na dodanie M_PI
itd. NIE jest to przypadek cmath
. Dlatego musisz się upewnić, #define _USE_MATH_DEFINES
zanim dołączysz cokolwiek innego. Mam nadzieję, że to wyjaśnia wszystko :)
Jeśli to nie wystarczy math.h
, używasz niestandardowego C / C ++, jak już wspomniano :)
Edycja 2 : Lub jak wskazuje David w komentarzach, po prostu stwórz sobie stałą, która definiuje wartość, a i tak masz coś bardziej przenośnego :)