将声明和实施压缩为 HPP 文件

2023-12-24

我读过一些关于在 C++ 中保留标头的必要性/适用性/实用性的文章,但我似乎找不到任何可靠的理由为什么/何时应该或不应该执行上述操作。我知道 boost 使用 .hpp 文件向最终用户提供模板函数,而不需要关联的 .cpp 文件,并且这种想法部分源自浏览该代码。看起来这将是一种传递单个文件模块(例如新的 Wt 或 Qt 小部件)的便捷方法(仍然坚持每个 .h 一个类约定)。

但是,假设您可以访问实现(例如在 OSS 的上下文中),为某人提供一个包含标头声明和实现的单个 .hpp 文件,是否存在任何负面的技术实现。从编译器/链接器的角度来看,它是否有任何负面影响?

对此的任何意见或观点将不胜感激。


我知道 boost 使用 .hpp 文件向最终用户提供模板函数,而不需要关联的 .cpp 文件

错误动词:这不是“没有need”,它是“没有ability”.

如果 Boost 可以,他们会将库分为头文件和实现文件。事实上,只要有可能,他们都会这样做。

彻底分离的原因很简单:纯头文件项目的编译时间增加极大地因为每次重新编译应用程序的最小部分时都必须读取、解析和编译关联的头文件。

仅当您碰巧重新编译该特定目标文件时才需要编译实现文件。

大型 C 和/或 C++ 项目需要hours编译。还有这些use头文件和目标文件完全分离。如果他们只使用头文件,我敢打赌编译时间将用以下单位来衡量days而不是几个小时。

但对于 Boost 的许多库来说,事实是模板定义可能不会与其声明驻留在单独的编译单元中,因此这是不可能的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将声明和实施压缩为 HPP 文件 的相关文章

随机推荐