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_DEFINESe 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 cmathsem o #defineespecificado. math.hé projetado especificamente para que você possa incluí-lo novamente com aquela definição agora alterada para adicionar M_PIetc. Este NÃO é o caso de cmath. Portanto, você precisa ter certeza #define _USE_MATH_DEFINESantes de incluir qualquer outra coisa. Espero que tudo se esclareça para você :)
Se não incluir, math.hvocê 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 :)