定义的宏无法识别
Defined macro not recognized
我在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构建了这个项目。有什么建议吗?
WIN32
不是正确的宏。实际上是_WIN32
。无论哪种方式,这都是Visual Studio C++定义的宏,但您使用的是MinGW,因此要检查的实际宏是__MINGW32__
或(64)。这仍然是错误的做法,因为MSDN需要:
#define _USE_MATH_DEFINES // for C++
#include <cmath>
为了访问数学常量。MinGW已经这样做了。
相关文章:
- 编译器无法识别在类声明之外定义的方法
- Metatrader 5 向导无法识别我的自定义交易信号模块
- 已定义构造函数的构造函数无法识别
- 在我的类中无法识别用户定义的文本运算符
- 在另一个文件中定义函数后,Visual Studio 无法识别该函数
- 隐式用户定义的转换不起作用,因为在编译C 时无法识别运算符和转换构造函数
- 定义从标头生成 gSOAP 文件时无法识别
- 如何求解与GCC/Clang不同的C 功能模板的MSVC处理(无法识别的模板定义)
- MSVC:无法识别的模板声明/定义(使用 Clang/GCC 编译)
- 谷歌语音识别(cpp示例):对AssignDescriptors()的未定义引用
- 如何识别在C 中的枚举类型中定义某些值
- 定义的宏无法识别
- Visual Studio,无法识别定义的函数
- C++中的"auto"是否可以识别自定义数据类型?
- 如何让 MS C++编译器识别 #include 中未定义的类型
- 无法识别的模板声明/定义
- C++自定义类未被其他类识别
- 无法识别函数定义
- 为什么NDK编译器不识别LOCAL_CFLAGS定义
- 无法识别.h文件中定义的typedef类型