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
出于相同的目的。