C++ 模板实现文件扩展名约定?

C++ Template implementation file extension convention?

对于用于模板 class 实施的文件扩展名是否有约定? **.tpp .template .hpp **

没有

很多项目都不太关心,只是把所有东西都扔到 .hpp 文件里。我这样做。

许多其他项目(大型 header-only 项目,如 Eigen 和 Boost)将内联代码和模板实现拆分为 .inl(用于内联)文件。

我从未亲眼见过 .tpp,但这并不意味着没有项目这样做。

但是没有约定,没有。

"Is there a convention for what file extension is used for template class implementation?"

不,实际上并没有为这些文件扩展名 AFAIK 建立标准约定。

虽然有许多常用的文件扩展名,例如

  • .icc
  • .inl
  • .tcc(这似乎至少被我的 GCC 4.8.1 标准库实现所使用)
  • ...

其实没那么重要,因为无论如何您都需要在模板头文件中使用 #include "MyImpl.tcc"#include "MyImpl.tpp" 语句对其进行明确说明。

你可以使用例如 .tci (template class i 实现,我在这里创造性地发明了一个 ;-) )

重要的一点是,您应该对解决方案涉及的所有项目使用一致的命名策略(这将使您更容易设置 IDE 语法突出显示首选项)。


唯一不行 恕我直言,扩展是.cc.cpp.cxx.c,这会混淆大多数自动构建系统和 IDE 当前的系统。构建系统将假定这些文件需要作为附加对象进行构建和链接,并且由于这些文件无法独立构建或以链接中的多个符号定义而告终而失败。