当前位置: 首页 > news >正文

滥用static inline

结论先行

  • 你现在的写法
    namespace hzi {static inline Config config;   // ← 注意 static
    }
    
    会让每个包含 config.hpp 的 .cpp 文件都拥有自己独立的一份 config 对象
    因此:
    – 它们在内存中地址不同
    – 在一个 .cpp 里修改 hzi::config.xxx 对另一个 .cpp 不可见
    – 如果程序逻辑依赖“全局唯一配置”,那么确实属于 bug

为什么看起来“能跑”

  1. 很多变量只是读取,还没做跨翻译单元的写入-读取,所以没立刻暴露。
  2. 或者目前只有一个 .cpp 真正用了这份配置,其它 .cpp 还没开始用。
  3. 一旦两个 .cpp 都写同一份配置,就会观察到“修改不生效”。

怎么验证
在 a.cpp 和 b.cpp 分别打印

std::cout << &hzi::config << std::endl;

地址不同 ⇒ 100 % 确认不是同一个对象。


正确改法(C++17 及以上)
config.hpp

namespace hzi {inline Config config;   // 去掉 static,保持 inline
}
  • inline 允许头文件定义,链接器会合并成唯一一份实例
  • 每个 .cpp 仍然通过 hzi::config.xxx 访问,但地址相同数据共享

如果编译器较老(C++14 及以下)
头文件只放声明:

// config.hpp
namespace hzi {extern Config config;   // 仅声明
}

在某个 .cpp(例如 config.cpp)里给出唯一定义:

// config.cpp
#include "config.hpp"
hzihzi::Config config;      // 唯一对象

其余 .cpp 继续 #include "config.hpp" 后使用 hzi::config 即可。


一句话总结
你现在用的 static inline Config config 会制造多份副本
要么改用 “inline 无 static”(C++17),要么改用 “extern 声明 + 单 cpp 定义”(旧标准),才能真正实现全程序共享的单一配置实例

http://www.hn-smt.com/news/284/

相关文章:

  • 2025强网杯ezphp复现
  • 漏洞报告被拒绝的常见原因及避免方法
  • 【IEEE出版 | 重庆邮电大学主办 | 多届次、高层次】第六届人工智能与计算机工程国际学术会议(ICAICE 2025)
  • Docker容器里面部署的Jenkins的Java17升级到21版本(无需删除之前容器,内部在线升级) - 攻城狮
  • 报表知识
  • 渐进过程中大O与小o混用
  • 消息队列的有序性
  • 【LTDC】DMA2D —— 嵌入式系统的 GPU
  • unity管理器设计:Manager of Managers
  • iview table 排序 columns 里面写 sortable: custom 不要写 sortable: true 不然会进行二次内部排序序号等 字段。
  • 本地运行nginx服务,模拟线上环境访问项目
  • git提交远程项目步骤
  • 2025 年搅拌器搅拌设备,侧入式搅拌设备,斜插式揽拌设备,卧式搅拌设备厂家最新推荐,聚焦资质、案例、售后的五家企业深度解读
  • 2025 年环保搅拌设备,搅拌装置设备,框式搅拌设备厂家最新推荐,实力品牌深度解析采购无忧之选!
  • CorelDRAW的shell扩展ShellXP.dll导致资源管理器explorer.exe卡死/冻结/无响应/挂起
  • 2025 年定制矿车,大型矿车,固定式矿车厂家最新推荐,产能、专利、环保三维数据透视
  • 醒图电脑版下载与安装教程(2025最新版)
  • 2025 年江苏电缆附件,热缩电缆附件,冷缩电缆附件,预制电缆附件厂家最新推荐,产能、专利、环保三维数据透视
  • Android Studio 使用glibc2.28的版本
  • 2025年10月兰花油品牌推荐榜:五款精华油深度对比与选购指南
  • 2025年浅拾兰花双萃致臻精华油:从成分与技术维度解析其护肤功效
  • 2025 年进口螺杆泵,萨伯特螺杆泵,污泥螺杆泵厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 为什么 AI 模型的最小理解单位是「特征」?
  • 2025年移动车载变电站厂家最新推荐榜:陕西四方华能凭硬实力成优选
  • XiaoQuQu 的 2025 CSP-S 第二轮模拟 ROUND2
  • 2025年硬密封闸阀厂家权威推荐榜单:手动闸阀/明杆闸阀/法兰闸阀源头厂家精选
  • 深入解析:ArcGIS Manager Server Add Host页面报错 HTTP Status 500
  • 2025修护洗/二硫化硒去屑/香氛/控油蓬松/洗发水品牌推荐:MASIL玛丝兰引领功效细分赛道,哪个牌子好?看实测口碑榜
  • AOP面向切面编程思想
  • 如何找到心仪的 ChatBI 智能体?Aloudata Agent 推荐给你