C头文件(.h)和C++头文件(.hpp)有什么区别?

16

我注意到 boost 库使用 (.hpp) 格式的头文件。
我很好奇,因为我看到的大多数源文件都使用普通的 .h 头文件。
是否有一些特殊的情况需要使用 .hpp 而不是 .h

谢谢。


https://dev59.com/_EvSa4cB1Zd3GeqPfpZF - anon
6个回答

24

这只是一种约定,没有什么特别之处。实际上,您可以在包含文件上使用任何扩展名。


7

.hpp、.H等是C++头文件的松散约定,.tcc是C++模板实现的松散约定,.h是c文件的强约定。

Boost使用hpp扩展名,QT使用.h扩展名,STL没有扩展名。我相信有一些库使用.H扩展名,但我还没有见过。


我认为Qt根本不使用任何扩展。 - Veeti
3
QT 3主要使用.h扩展名,但Qt 4似乎正在向没有扩展名的方向迁移,因为大多数头文件也拥有.h的对应文件。 - greyfade

2

确实,Otavio是正确的。

在构建混合语言产品时,我使用hpp / h来区分两种语言。例如,类定义可能放在.hpp文件中(实现在.cpp文件中),而.h文件只定义C支持的函数。为了进行这种分离,了解语言之间的区别非常重要 - 为此,我通过gcc传递*.c文件,通过g ++传递*.cpp文件。


1

#include "filename" 预处理器指令的目的是用 filename 的内容替换 #include 行。
实际上,文件的任何名称都可以使用,但通常包含文件的扩展名为 ".h" 或 ".hpp",其中一个优点是在您选择的编辑器中进行语法高亮(在我的情况下是 vim)。


0

我听说UNIX和Linux程序员使用.hh和.cc而不是.cpp和.h也很普遍。个人而言,我喜欢将我的头文件命名为.hh,因为这有助于emacs区分C和C++语法高亮。我还使用.cc扩展名,因为它与.hh搭配起来看起来很好,而且比.cpp更短。我通常在Linux环境中进行编码。


0

你只是告诉编译器在编译期间将给定的文件包含在你的代码中。因此,文件的扩展名并不重要。但最好是文本文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接