解决添加库的头文件导致编译出的目标文件过大问题

问题场景:

开发spdlog日志功能时,发现将spdlog库中的头文件包含到工程中的某个头文件中,编译出来的可执行文件很大,PC版增加了100多M,arm交叉编译版增加了2M,但是将spdlog库中的头文件包含到工程中的源文件中不会出现这个问题;

原因:暂时不明

解决方法:可以使用前向声明(forward declaration)来解决这个问题。前向声明是一种告诉编译器有关类型但不包含完整定义的方法。在这种情况下,可以在a.h中使用前向声明来告诉编译器关于类b的存在,而不必包含b.h。然后,在a.cpp或其他引用类b的地方,再包含b.h以获得完整定义。

cpp 复制代码
// 在工程的头文件中声明类

namespace spdlog {
    class logger;
}


//定义类对象
std::shared_ptr<spdlog::logger> m_rotating_logger;

然后在源文件中就可以使用这个对象

相关推荐
Harvy_没救了2 分钟前
【Linux】循环语句
linux·运维
小比特_蓝光4 分钟前
Linux----进程概念
linux·运维·服务器
大卡片11 分钟前
Linux进程基础
linux·运维·服务器
.柒宇.11 分钟前
docker容器技术实战
运维·docker·容器
优化Henry13 分钟前
LTE-TDD小区光路闪断故障处理典型案例
运维·网络·5g·信息与通信
ShineWinsu17 分钟前
对于Linux:“一切皆文件“以及缓冲区的解析
linux·运维·c++·面试·笔试·缓冲区·一切皆文件
倔强的胖蚂蚁17 分钟前
信创企业级 openEuler 24 部署 docker-ce 全指南
运维·docker·云原生·容器
xingyuzhisuan42 分钟前
从x86到Arm:GPU服务器CPU架构多元化趋势深度解读
服务器·arm开发·架构·gpu算力
LinuxRos44 分钟前
I2C子系统与驱动开发:从协议到实战
linux·人工智能·驱动开发·嵌入式硬件·物联网
Crazy CodeCrafter1 小时前
服装实体店现在还适合转电商吗?
大数据·运维·人工智能·经验分享·自动化·开源软件