You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在.tpp文件中包含对应.hpp文件是否属于C++良好编码实践?

结论:不需要在.tpp文件中显式包含对应的.hpp文件

具体原因如下:

  • 首先要明确.tpp文件的定位:它本身不是独立对外暴露的头文件,而是类模板头文件的附属实现片段。你已经在a.hpp的末尾主动引入了a.tpp,预处理时a.tpp的内容会被嵌入到a.hpp的类定义之后、头文件守卫闭合之前,此时类模板A的定义已经完全可见,完全满足成员函数定义的编译要求。
  • "显式包含当前文件用到的所有头文件"的原则,针对的是可以被其他代码单独引入、作为独立依赖单元的头文件。正常场景下不会有代码直接#include "a.tpp",它只会被对应的.hpp文件引入,不需要满足独立编译的要求,因此不需要遵守这个原则。
  • 就算你强行加上#include "a.hpp"也不会出错:因为两个文件都有头文件守卫,递归包含会被直接阻断,编译可以正常通过,只是多了一行冗余的预处理指令而已,属于非必要操作。
  • 额外补充最佳实践:甚至可以去掉.tpp文件的头文件守卫,因为它只会被对应的.hpp文件引入,而.hpp本身的守卫已经可以避免重复包含的问题,当然留着守卫也没有副作用。

内容的提问来源于stack exchange,提问作者Francisco Castanheira

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 02:45:06