news 2026/7/7 18:15:00

C++ error C2065: “M_PI”: 未声明的标识符 解决方案

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ error C2065: “M_PI”: 未声明的标识符 解决方案

一、问题根源

在 Linux / GCC / Clang 中:

#include<cmath>

通常就能用:

M_PI

但在MSVC中:

  • M_PI默认不定义
  • 需要显式开启宏,或自己定义
  • 或使用C++20 标准方案

所以才会出现:

error C2065: “M_PI”: 未声明的标识符

二、最简单粗暴(不推荐,但常见)

在使用前手动定义:

#ifndefM_PI#defineM_PI3.14159265358979323846#endif

能用
不优雅
易重复定义
不类型安全


三、MSVC 官方方式(老项目常用)

1.在#include <cmath>之前

#define_USE_MATH_DEFINES#include<cmath>

然后就可以:

doublex=M_PI;

注意:

  • 必须在<cmath>之前
  • 只对 MSVC 有意义
  • 属于“平台特性”

稳定
兼容老代码
非标准 C++


四、 推荐方案

使用C++20std::numbers::pi

#include<numbers>doublex=std::numbers::pi;

或指定类型:

doublex=std::numbers::pi_v<double>;floaty=std::numbers::pi_v<float>;

标准
类型安全
无宏
跨平台
不污染命名空间

强烈推荐


五、如果在模板 / 数值库中(非常重要)

不要在模板中用M_PI

template<typenameT>Tfoo(){returnT(M_PI);// 不推荐}

推荐:

#include<numbers>template<typenameT>Tpi(){returnstd::numbers::pi_v<T>;}

六、Eigen / GTSAM / 数值库中的惯用写法

很多数值库内部都会写:

constexprdoublekPi=3.14159265358979323846;

或:

staticconstexprdoublepi=std::acos(-1.0);

也可以用:

constexprdoublepi=std::acos(-1);

标准
无宏
编译期常量


七、工程级方案(如果不能改源码)

在 CMake 中:

add_definitions(-D_USE_MATH_DEFINES)

或:

target_compile_definitions(your_target PRIVATE _USE_MATH_DEFINES)

八、最终建议

场景推荐
新项目 / 现代 C++std::numbers::pi
旧 MSVC 项目_USE_MATH_DEFINES
模板 / 数值库std::numbers::pi_v<T>
快速修 bug手动#define M_PI(临时)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/7 9:41:38

C语言函数实现提取字节中的某一位,写入某一位到字节中

提取字节中的某一位&#xff0c;num为要提取的字节&#xff0c;n为要提取字节中的第n位&#xff0c;返回置位第n位的值 // 提取 uint8_t 数值的第 n 位&#xff08;索引从 0 开始&#xff0c;最低位为0&#xff09; unsigned char get_bit(unsigned char num, unsigned char n…

作者头像 李华
网站建设 2026/7/7 18:42:55

硬核的财税服务公司推荐

硬核的财税服务公司推荐在企业的发展进程中&#xff0c;财税管理至关重要&#xff0c;专业的财税服务公司成为众多企业的有力支撑。那么&#xff0c;如何挑选硬核的财税服务公司&#xff0c;又有哪些值得推荐的呢&#xff1f;财税服务的重要性财税服务涵盖了记账、报税、税务筹…

作者头像 李华
网站建设 2026/7/7 17:40:56

Kotaemon支持批量问答吗?自动化处理能力测评

Kotaemon支持批量问答吗&#xff1f;自动化处理能力测评 在金融、医疗和客服等专业领域&#xff0c;企业对智能问答系统的需求早已超越了简单的“你问我答”。面对成千上万条合同条款解析、历史工单归因或FAQ测试任务&#xff0c;传统的交互式对话引擎显得力不从心。真正的挑战…

作者头像 李华
网站建设 2026/7/7 12:48:19

代码接单:用 ComfyUI 搭建电商模特换装工作流(保姆级教程)

&#x1f4b0; 前言&#xff1a;为什么这个需求最赚钱&#xff1f; 在X鱼和小X书上&#xff0c;搜一下“AI 模特图”或者“服装换模特”&#xff0c;你会发现大量的接单需求。 商家痛点极其明显&#xff1a; 太贵&#xff1a;请个外模拍一套图&#xff0c;动辄几千块。太慢&…

作者头像 李华
网站建设 2026/7/7 1:28:17

网上超市|基于java+ vue网上超市系统(源码+数据库+文档)

网上超市 目录 基于springboot vue网上超市系统 一、前言 二、系统功能演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue网上超市系统 一、前言 博主介绍&#xff1a;✌️大…

作者头像 李华