定义的宏未被识别

时间:2016-05-09 01:54:38

标签: c++

我的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构建了项目。有什么建议吗?

1 个答案:

答案 0 :(得分:5)

WIN32不是正确的宏。它实际上是_WIN32。无论哪种方式,这是由Visual Studio C ++定义的宏,但您使用的是MinGW,因此要检查的实际宏是__MINGW32__或(64)。这仍然是做错事的方法,因为MSDN要求:

#define _USE_MATH_DEFINES // for C++
#include <cmath>

为了访问数学常量。 MinGW already does this