Curiosamente, verifiqué esto en una aplicación mía y obtuve el mismo error.
Pasé un tiempo revisando los encabezados para ver si había algo debajo de la definición _USE_MATH_DEFINESy no encontré nada.
Así que moví el
#define _USE_MATH_DEFINES
#include <cmath>
para ser lo primero en mi archivo (no uso PCH, así que si lo eres, tendrás que tenerlo después #include "stdafx.h") y de repente se compila perfectamente.
Intente moverlo hacia arriba en la página. Sin embargo, estoy totalmente inseguro de por qué esto causaría problemas.
Editar : lo descubrí. El #include <math.h>ocurre dentro de los protectores de cabecera de cmath. Esto significa que algo más arriba en la lista de #includes se incluye cmathsin el #defineespecificado. math.hestá diseñado específicamente para que pueda incluirlo nuevamente con esa definición ahora cambiada para agregar, M_PIetc. Este NO es el caso con cmath. Por lo tanto, debe asegurarse #define _USE_MATH_DEFINESantes de incluir cualquier otra cosa. Espero que eso te aclare :)
Si no lo incluye math.h, está utilizando C / C ++ no estándar como ya se señaló :)
Edición 2 : O, como David señala en los comentarios, simplemente conviértase en una constante que defina el valor y, de todos modos, tendrá algo más portátil :)