Curiosamente, verifiquei isso em um aplicativo meu e recebi o mesmo erro.
Passei um tempo verificando os cabeçalhos para ver se havia algo undef'ing o _USE_MATH_DEFINES
e não encontrei nada.
Então mudei o
#define _USE_MATH_DEFINES
#include <cmath>
para ser a primeira coisa no meu arquivo (eu não uso PCHs, então se você usar terá que tê-lo depois de #include "stdafx.h"
) e de repente compilar perfeitamente.
Tente movê-lo para cima na página. Totalmente inseguro quanto ao motivo disso causar problemas.
Edit : Descobri isso. O #include <math.h>
ocorre dentro dos protetores de cabeçalho de cmath. Isso significa que algo mais acima na lista de #includes está incluindo cmath
sem o #define
especificado. math.h
é projetado especificamente para que você possa incluí-lo novamente com aquela definição agora alterada para adicionar M_PI
etc. Este NÃO é o caso de cmath
. Portanto, você precisa ter certeza #define _USE_MATH_DEFINES
antes de incluir qualquer outra coisa. Espero que tudo se esclareça para você :)
Se não incluir, math.h
você está usando C / C ++ não padrão, como já apontado :)
Edição 2 : Ou, como David aponta nos comentários, torne-se uma constante que defina o valor e você terá algo mais portátil de qualquer maneira :)