我注意到 boost 库使用 (.hpp
) 格式的头文件。
我很好奇,因为我看到的大多数源文件都使用普通的 .h
头文件。
是否有一些特殊的情况需要使用 .hpp
而不是 .h
?
谢谢。
这只是一种约定,没有什么特别之处。实际上,您可以在包含文件上使用任何扩展名。
.hpp、.H等是C++头文件的松散约定,.tcc是C++模板实现的松散约定,.h是c文件的强约定。
Boost使用hpp扩展名,QT使用.h扩展名,STL没有扩展名。我相信有一些库使用.H扩展名,但我还没有见过。
确实,Otavio是正确的。
在构建混合语言产品时,我使用hpp / h来区分两种语言。例如,类定义可能放在.hpp文件中(实现在.cpp文件中),而.h文件只定义C支持的函数。为了进行这种分离,了解语言之间的区别非常重要 - 为此,我通过gcc传递*.c文件,通过g ++传递*.cpp文件。
#include "filename"
预处理器指令的目的是用 filename
的内容替换 #include
行。
实际上,文件的任何名称都可以使用,但通常包含文件的扩展名为 ".h" 或 ".hpp",其中一个优点是在您选择的编辑器中进行语法高亮(在我的情况下是 vim)。
我听说UNIX和Linux程序员使用.hh和.cc而不是.cpp和.h也很普遍。个人而言,我喜欢将我的头文件命名为.hh,因为这有助于emacs区分C和C++语法高亮。我还使用.cc扩展名,因为它与.hh搭配起来看起来很好,而且比.cpp更短。我通常在Linux环境中进行编码。
你只是告诉编译器在编译期间将给定的文件包含在你的代码中。因此,文件的扩展名并不重要。但最好是文本文件。