感谢
答案 0 :(得分:19)
在C ++中,文件扩展名实际上并不重要。使用.h,.hpp,.hxx或没有文件扩展名都是按惯例。
标准库的头文件不使用文件扩展名。许多项目,包括Boost,都使用.hpp。许多项目都使用.h。只需选择一个并在项目中保持一致。
答案 1 :(得分:4)
编译器不区分这两个扩展,因此从技术上讲,使用哪个扩展并不重要。就个人而言,我将.hxx扩展名用于仅在项目内部使用的头文件,而.hpp用于那些应该用库/软件发布的头文件。
答案 2 :(得分:2)
鉴于我最近发现了一个发现,我建议我们重新开启这个讨论。在过去的9年中,我在C和C ++项目中对源文件使用了以下命名约定。
这些常见函数体的示例,MyStringFunctionA,ANSI实现,在MyStringFunctionA.cpp中定义,而MyStringFunctionW,Unicode(宽字符)实现,在MyStringFunctionW.cpp中定义。 MyStringFunctionA.cpp和MyStringFunctionW.cpp包含原型,开始和结束括号以及标题,受UNICODE约束,适用于宽字符版本。函数体在函数定义块中的INI文件中定义,该文件是#included inline。
结合通用TCHAR映射,这种方法极大地简化了维护Unicode和ANSI版本,两者都保持有效使用。
这个命名约定适用于Visual Studio 6.但是,当我开始将我的代码库迁移到Visual Studio 2013时,我发现了一个令人讨厌的变化,最初令人困惑。虽然编译得很干净,但是当我的一个INL文件在代码编辑器中打开时,我会在错误窗口中看到几十个Intellisense“错误”。我引用了“错误”一词,因为它们不是真正的错误;当INL文件关闭时,它们就会消失,并且iNL被拉入的C和CPP文件编译没有错误,链接并正确运行。
答案 3 :(得分:0)
头文件扩展名通常不会产生影响,但我知道在某些情况下.cpp文件的扩展名会有所不同。根据您的编译器,前端可能会选择将源文件编译为C或C ++。
这可能会有所不同,特别是如果您将编译与链接阶段相结合,因为它可能导致链接不同的库(例如g ++ vs gcc),因此您可以控制makefile中的结果。
答案 4 :(得分:0)
使用C ++编程语言编写的源代码头文件;可能包括数据类型,常量,变量和其他定义;用于声明和存储代码的可重用组件。 可以使用#include指令将HXX文件插入C ++程序。例如,#include myHeader.hxx指示C ++编译器在当前程序文件中包含“ myHeader.hxx”。