C++ 无法识别已定义的宏

C++ 无法识别已定义的宏,c++,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

我的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;
}

我不明白可能是什么问题。我使用CMake构建了这个项目,使用
eclipsecdt4-mingwmakefiles
作为生成器。有什么建议吗?

WIN32
不是正确的宏。实际上是。无论哪种方式,这是一个由VisualStudioC++定义的宏,但你使用的是实际的宏,检查的是“代码>”、“明文”、“代码”>或(64)。这仍然是错误的做法,因为需要:

#define _USE_MATH_DEFINES // for C++
#include <cmath>
<代码>定义了USER Mythy//C++ #包括
为了访问数学常数

您可以尝试
\uuuu MINGW32\uuuu
而不是
WIN32
。。。?或者可能是
\u WIN32
?您可以尝试
-E
查看预处理后的编译器输出,然后搜索
M#u PI
。您的帖子没有指出触发了
#ifdef
中的哪个条件。是否是WIN32条件?是,它是定义。至少我是这么认为的,因为Eclipse的编辑器将代码显示为活动的。有没有办法100%确定编译器输入的是哪个部分?我的水晶球告诉我
\define\u USE\u MATH\u define
丢失了(旧的明码,配置不正确的CMake,…)
#define _USE_MATH_DEFINES // for C++
#include <cmath>