我的Eclipse项目中有以下代码
#pragma once
#ifdef WIN32 // Compiler enters here !
#define M_PI 3.14159265358979323846
#else
#include <cmath>
#endif
#ifndef INFINITY
#define INFINITY FLT_MAX
#endif
inline float Radians(float deg)
{
return ((float)M_PI/180.f) * deg;
}
问题是我从编译器中得到以下错误
Luzoso.hpp:22:20: error: 'M_PI' was not declared in this scope
return ((float)M_PI/180.f) * deg;
我不明白问题可能是什么。我使用ECLIPSE CDT4 - MinGW Makefiles
作为生成器使用CMake构建了项目。有什么建议吗?
答案 0 :(得分:5)
WIN32
不是正确的宏。它实际上是_WIN32
。无论哪种方式,这是由Visual Studio C ++定义的宏,但您使用的是MinGW,因此要检查的实际宏是__MINGW32__
或(64)。这仍然是做错事的方法,因为MSDN要求:
#define _USE_MATH_DEFINES // for C++
#include <cmath>
为了访问数学常量。 MinGW already does this。