我曾经认为它曾经是这样的:
.h
.c
.cpp
然后像.hpp,.cc和之类的文件.cxx出现了,我完全糊涂了……它们之间有什么区别?你什么时候使用“新”的?
.hpp
.cc
.cxx
从历史上看,用于 C 的第一个扩展名是.cand .h,与 C 完全相同。这引起了实际问题,尤其是.c不允许构建系统轻松区分 C 和 C 文件的问题。
开发了 C 的 Unix 具有区分大小写的文件系统。所以有些用于.CC 文件。其他使用.c++,.cc和.cxx。 .C并且.c++存在它们在其他文件系统上不可用的问题,并且它们的使用迅速下降。DOS 和 Windows C++ 编译器倾向于使用.cpp,其中一些使选择变得困难,如果不是不可能的话,配置。可移植性考虑使这种选择成为最常见的选择,即使在 MS-Windows 之外也是如此。
.C
.c++
标头使用了相应的.H, .h++,.hh和. 但与主文件不同的是,直到今天它仍然是 C++ 的流行选择,即使它的缺点是它不允许知道头文件是否可以包含在 C 上下文中。标准标题现在根本没有扩展名。.hxx``.hpp``.h
.H
.h++
.hh
.hxx``.hpp``.h
此外,有些人将.ii, .ixx, .ipp,.inl用于提供内联定义的标头和,.txx用于模板定义。这些要么包含在提供定义的标题中,要么在需要它们的上下文中手动包含。.tpp``.tpl
.ii
.ixx
.ipp
.inl
.txx
.tpp``.tpl
编译器和工具通常不关心使用了哪些扩展,但是使用与 C++ 相关的扩展可以避免跟踪如何配置它们以便正确识别所使用的语言的需要。
2017 年编辑:Visual Studio 的实验模块支持识别.ixx为模块接口的默认扩展,clang++ 正在识别.c++m,.cppm并且.cxxm用于相同目的。
.c++m
.cppm
.cxxm