news 2026/6/10 11:08:59

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/6/9 15:17:44

Kotaemon支持WebSocket协议吗?双向通信实现方式

Kotaemon支持WebSocket协议吗&#xff1f;双向通信实现方式 在构建现代智能对话系统时&#xff0c;一个绕不开的问题是&#xff1a;如何让AI的回应更“实时”&#xff1f;用户不再满足于点击发送后等待数秒才看到完整答案——他们希望看到回答像打字机一样逐字浮现&#xff0c;…

作者头像 李华
网站建设 2026/6/10 14:41:11

8款 AI论文工具:我的毕业论文,终于没熬到凌晨三点

宿舍书桌的台灯换了第三次灯泡时&#xff0c;我正对着论文初稿的 “文献综述” 部分发呆 —— 上次导师的批注还亮在屏幕边缘&#xff1a;“漏了 2025 年最新研究成果&#xff0c;综述时效性不足”&#xff1b;旁边 Excel 里的实验数据方差分析&#xff0c;我算错了两次符号&am…

作者头像 李华
网站建设 2026/6/10 13:35:15

❾⁄₁ ⟦ OSCP ⬖ 研记 ⟧ 防病毒软件规避 ➱ 防病毒软件概述(上)

郑重声明&#xff1a;本文所涉安全技术仅限用于合法研究与学习目的&#xff0c;严禁任何形式的非法利用。因不当使用所导致的一切法律与经济责任&#xff0c;本人概不负责。任何形式的转载均须明确标注原文出处&#xff0c;且不得用于商业目的。 &#x1f50b; 点赞 | 能量注入…

作者头像 李华
网站建设 2026/6/5 16:46:51

Kotaemon如何实现跨文档关联?深层推理能力展示

Kotaemon如何实现跨文档关联&#xff1f;深层推理能力展示 在企业知识库日益庞杂的今天&#xff0c;一个简单的业务问题往往牵涉多份合同、报告或数据库记录。比如&#xff1a;“对比A公司在2020和2021年财报中提到的风险因素&#xff0c;并分析其对投资回报率的影响。”——这…

作者头像 李华
网站建设 2026/6/10 14:27:24

TCP IP核数据手册解读

文章目录 前言 一、用途 二、特点 三、连接方式 3.1 双绞线连接:FPGA外挂PHY芯片 3.2 光纤连接:有对应的Phy ip核 四、接口信号解释 4.1 系统信号 4.2 网络参数信号 4.3 PHY接口信号 4.4 TCP接口信号 4.5 UDP接口信号 五、接口信号时序 5.1 TCP 建立连接信号时序 5.2 TCP写时…

作者头像 李华
网站建设 2026/6/9 17:25:07

HoRain云--Python长连接实现:4种高效方案详解

&#x1f3ac; HoRain 云小助手&#xff1a;个人主页 ⛺️生活的理想&#xff0c;就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站&#xff0c;性价比超高&#xff0c;大内存超划算&#xff01;忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …

作者头像 李华