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_DEFINES
y 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 cmath
sin el #define
especificado. math.h
está diseñado específicamente para que pueda incluirlo nuevamente con esa definición ahora cambiada para agregar, M_PI
etc. Este NO es el caso con cmath
. Por lo tanto, debe asegurarse #define _USE_MATH_DEFINES
antes 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 :)