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_DEFINESi 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 cmathbez #defineokreślonego. math.hjest specjalnie zaprojektowany, aby można go było ponownie dołączyć do definicji, teraz zmieniono na dodanie M_PIitd. NIE jest to przypadek cmath. Dlatego musisz się upewnić, #define _USE_MATH_DEFINESzanim 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 :)