【发布时间】:2020-08-08 12:10:04
【问题描述】:
对于模板类实现使用什么文件扩展名有约定吗? **.tpp .template .hpp **
【问题讨论】:
-
没有约定,但是如果您选择一种策略,最好在模块内始终如一地执行,或者更好的是,整个项目。
-
我试图扩展关于 IDE 和自动构建系统的危险部分。看看吧。
标签: c++ templates coding-style
对于模板类实现使用什么文件扩展名有约定吗? **.tpp .template .hpp **
【问题讨论】:
标签: c++ templates coding-style
“对于模板类实现使用什么文件扩展名有约定吗?”
没有真正为这些文件扩展名 AFAIK 建立标准约定。
虽然有许多常用的文件扩展名,例如
.icc
.inl
.tcc(这似乎至少被我的 GCC 4.8.1 标准库实现所使用)...这并不重要,因为无论如何您都需要在模板头文件中使用#include "MyImpl.tcc"、#include "MyImpl.tpp" 语句来明确说明它。
您可以使用例如.tci(template class i实施,我在这里创造性地发明了一个;-) )
重要的一点是,您应该对解决方案所涉及的所有项目使用一致的命名策略(这样可以更轻松地设置 IDE 首选项以突出显示语法)。
恕我直言,唯一的 no go 扩展是 .cc、.cpp、.cxx 和 .c,这会使大多数自动构建系统和IDE 目前就在身边。构建系统将假定这些文件需要作为附加对象进行构建和链接,并且由于这些文件要么无法独立构建,要么最终在链接中出现多个符号定义而失败。
【讨论】:
.impl.hpp 或.tpl.hpp,因为它会自动提供语法高亮,并且不应该自动编译。大多数人会认为这是不可行的吗?
没有。
很多项目并不在意,只是把所有东西都扔到.hpp 文件中。我这样做。
许多其他项目(如 Eigen 和 Boost 这样的大标题项目)将内联代码和模板实现拆分为 .inl(用于内联)文件。
我从未亲眼见过.tpp,但这并不意味着没有项目这样做。
但是没有约定,没有。
【讨论】:
.tpp(因此它与hpp 和cpp 一致)。在开发过程中,我不会拆分模板标题。
.ipp。