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

问题描述 投票:0回答:3

模板类实现使用什么文件扩展名有约定吗? **.tpp .模板.hpp **

c++ templates coding-style
3个回答
25
投票

“模板类实现使用什么文件扩展名有约定吗?”

不,据我所知,并没有为这些文件扩展名建立真正的标准约定。

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

  • .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 感到困惑。构建系统将假设这些文件需要作为附加对象进行构建和链接,并且会失败,因为这些文件要么无法独立构建,要么最终在链接中产生多个符号定义。


9
投票

没有。

很多项目并不太关心,只是将所有内容都扔到

.hpp
文件中。我就是这样做的。

许多其他项目(仅包含大标头的项目,例如 Eigen 和 Boost)将内联代码和模板实现拆分为

.inl
(用于内联)文件。

我从未亲眼见过

.tpp
,但这并不意味着没有项目可以做到这一点。

但是没有约定,没有。


0
投票

以下至少被 VSCode 识别为 C++ 实现文件(非详尽):

.ixx
.inl
.tpp
.ipp
...

VSCode 似乎不喜欢

.tcc
.icc

我喜欢

ipp
,因为它带来了“执行的i”。 Boost 作者显然也喜欢它。但这些只是我的两分钱。

© www.soinside.com 2019 - 2024. All rights reserved.