Possible Duplicates:
*.h或 *.hpp for您的班级定义
C 代码文件扩展名正确吗?

我曾经以为曾经是这样的:

  • .h文件是C和C ++的标头文件,通常仅包含声明。
  • .c文件是C源代码。
  • .cpp文件是C ++源代码(也可以是C源代码)。

然后像文件一样.hpp,,,,.cc, 和.cxx来了,我完全感到困惑…这些区别有什么区别?您什么时候使用"新"?

答案

从历史上看,C ++使用的第一个扩展是.c.h,与C完全一样,这引起了实际问题,尤其是.c这不允许构建系统轻松区分C ++和C文件。

开发了C ++的Unix具有案例敏感的文件系统。所以有些使用.C对于C ++文件。其他使用.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出于相同的目的。

来自: stackoverflow.com