我正在开始一个新的 C++ 项目并开始寻找最新的 C++ 风格。关于文件命名,我在这里结束了,我想我会分享我是如何提出我的选择的。开始:
Stroustrup 认为这更多是一种商业考虑,而不是技术考虑。
按照他的建议,让我们检查一下工具链的期望。
对于 UNIX/Linux,您可以将以下默认 GNU make 规则解释为支持 .cc 文件名后缀,因为 .cpp 和 .C 规则只是别名:
$ make -p | egrep COMPILE[^=]+=
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
COMPILE.cpp = $(COMPILE.cc)
COMPILE.C = $(COMPILE.cc)
(注意:没有默认的 COMPILE.cxx 别名)
因此,如果您的目标是 UNIX/Linux,.cc 和 .cpp 都是很好的选择。
当面向 Windows 时,您正在寻找 .C 的问题,因为它的文件系统不区分大小写。您可能需要注意Visual Studio 支持 .cpp 后缀
当面向 macOS 时,请注意 Xcode 更喜欢 .cpp/.hpp(刚刚在 Xcode 10.1 上检查过)。您始终可以将标题模板更改为使用 .h。
对于它的价值,您还可以根据您喜欢的代码库做出决定。 例如, Google 使用 .cc,LLVM libc++ 使用 .cpp。
头文件呢?它们是在 C 或 C++ 文件的上下文中编译的,因此不需要编译器或构建系统来区分 .h 和 .hpp。然而,您的编辑器/IDE 的语法高亮和自动缩进可能是一个问题,但是通过将所有 .h 文件关联到 C++ 模式可以解决此问题。例如,我在 Linux 上的 emacs 配置以 C++ 模式加载所有 .h 文件,并且可以很好地编辑 C 头文件。除此之外,在混合 C 和 C++ 时,您可以遵循此建议。
我个人的结论:.cpp/.h是阻力最小的路径。