< p > 可能的重复: < br / > *.h或*.hpp用于类定义 < br / > 正确的c++代码文件扩展名?.cc vs .cpp < / p >
我曾经认为它是这样的:
.h
.c
.cpp
然后出现了.hpp、.cc和.cxx这样的文件,我完全懵了……它们之间有什么区别?什么时候用“new”;的吗?
.hpp
.cc
.cxx
这真的无关紧要 如果你将.c提供给c++编译器,它将被编译为cpp, .cc/。CXX只是一些编译器使用的.cpp的替代品
.hpp是一个区分头文件的尝试,其中有显著的c和c++的差异。一种常见的用法是.hpp具有必要的cpp包装器或命名空间,然后包括.h,以便将c库公开给c和c++。
这些扩展并不是新的,而是旧的。: -)
在c++刚刚出现的时候,有些人希望源文件的扩展名是.c++,但这在大多数文件系统上行不通。所以他们尝试了一些类似的东西,比如。cxx,或者。cpp。
其他人则考虑语言名称,并将。c“递增”到。cc,甚至在某些情况下是。c。没那么流行。
有些人认为,如果源是.cpp,则头文件应该是.hpp以匹配。适度的成功。
一般来说,. C和.h文件用于C或C兼容代码,其他都是c++。
许多人喜欢对c++文件使用一致的配对:.cpp和.hpp, .cxx和.hxx, .cc和.hh,等等。我个人更喜欢。cpp和。hpp。
从历史上看,c++使用的第一个扩展名是.c和.h,就像C一样。这导致了实际问题,尤其是.c,它不允许构建系统轻松区分c++和C文件。
c++是在Unix上开发的,Unix有区分大小写的文件系统。因此,有些人使用.C作为c++文件。其他使用.c++, .cc和.cxx。.C和.c++存在在其他文件系统上不可用的问题,它们的使用很快就会下降。DOS和Windows c++编译器倾向于使用.cpp,其中一些编译器很难配置,如果不是不可能的话。可移植性的考虑使得这种选择最为普遍,甚至在ms windows之外也是如此。
.C
.c++
头文件使用了相应的.H, .h++, .hh, .hxx和.hpp。但与主文件不同的是,.h直到今天仍然是c++的一个流行选择,即使它的缺点是不允许知道头文件是否可以包含在C上下文中。标准头文件现在根本没有扩展名。
.H
.h++
.hh
.hxx
此外,有些使用.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