我曾经认为过去是这样的:
.h 文件是C和C++的头文件,通常只包含声明..c 文件是C源代码..cpp 文件是C++源代码(也可以是C源代码).那些文件就像.hpp,.cc然后.cxx出现了,我完全糊涂了......那些之间的区别是什么?你什么时候使用"新"的?
APr*_*mer 282
从历史上看,用于C++的第一个扩展是.c和C .h一样,这就像C一样.这引起了实际问题,特别是.c那些不允许构建系统轻松区分C++和C文件的问题.
已经开发了C++的Unix具有区分大小写的文件系统.所以有些用于.CC++文件.其他用过.c++,.cc和.cxx. .C并且.c++问题是它们在其他文件系统上不可用,并且它们的使用很快就会丢失.DOS和Windows C++编译器倾向于使用.cpp,其中一些编译器很难(如果不是不可能)进行配置.可移植性考虑使得该选择最常见,甚至在MS-Windows之外.
头已经使用相应的.H,.h++,.hh,.hxx和.hpp.但与主文件不同的是,.h到今天仍然是C++的流行选择,即使它的缺点是它不允许知道标头是否可以包含在C上下文中.标准标题现在根本没有扩展名.
此外,一些正在使用.ii,.ixx,.ipp,.inl页眉提供内置定义和.txx,.tpp和.tpl为模板定义.这些要么包含在提供定义的标题中,要么在需要它们的上下文中手动包含.
编译器和工具通常不关心使用哪些扩展,但使用与C++关联的扩展可以防止需要跟踪如何配置它们以便正确识别所使用的语言.
2017编辑:Visual Studio的实验模块支持认为.ixx是模块接口的默认扩展,clang ++正在识别.c++m,.cppm并且.cxxm出于同样的目的.
Bo *_*son 54
这些扩展并不是新的,它们已经过时了.:-)
当C++是新的时,有些人希望对源文件使用.c ++扩展,但这在大多数文件系统上都不起作用.所以他们尝试了接近它的东西,比如.cxx或.cpp.
其他人想到了语言名称,并且在某些情况下"增加".c以获得.cc甚至.C.没那么抓.
有些人认为如果源是.cpp,那么标题应该是.hpp才能匹配.中等成功.
Mar*_*ett 27
这没关系.
如果将.c提供给c ++编译器,它将编译为cpp,.cc/.cxx只是某些编译器使用的.cpp的替代品.
.hpp试图区分存在重大c和c ++差异的头文件.常见的用法是.hpp具有必要的cpp包装器或命名空间,然后包含.h以便将ac库暴露给c和c ++.
谈到.hpp扩展,当人们知道这个头文件包含C++而不是C时,我觉得它很有用,比如使用命名空间或模板等,只要他们看到文件,所以他们不会尝试提供它到C编译器!我还想命名头文件,它不仅包含声明,还包含实现,如.hpp文件.像头文件包括模板类.虽然这只是我的意见,当然它不应该是正确的!:)
通常,.c和.h文件用于C或C兼容的代码,其他一切都是C++.
许多人喜欢对C++文件使用一致的配对:.cpp与.hpp,.cxx与.hxx,.cc与.hh等.我个人偏好是.cpp和.hpp.
| 归档时间: |
|
| 查看次数: |
160064 次 |
| 最近记录: |