C ++代码文件的扩展名? .cc vs .cpp

我已经看到C ++代码保存为.cc.cpp文件。 两者有什么区别?

谷歌风格指南似乎build议.cc ,但没有提供解释。

我主要关心Linux系统上的程序。

在一天结束的时候,这并不重要,因为C ++编译器可以用这两种格式处理文件。 如果这是你的团队中的一个真正的问题,请投掷一枚硬币,然后继续进行实际的工作。

GNU GCC认识到以下所有的C ++文件,无论您是通过gcc还是g ++调用它,都将使用C ++编译: .C.cc.cpp.CPP.c++ .cp.cxx

注意.C – GCC中的大小写问题, .c是一个C文件,而.C是一个C ++文件(如果你让编译器决定它是什么编译的话)。

GCC还支持其他后缀来表示特殊处理,例如, .ii文件将被编译为C ++,但不会被预处理(打算用于单独的预处理代码)。 所有认可的后缀详见gcc.gnu.org

伟大的build议,哪些用于生成文件和其他工具,考虑到非编译工具,而决定使用哪个扩展是一个很好的方法来帮助find一个适合你的答案。

我只是想添加以下内容来帮助我find一些.cc.cpp信息。 以下是由不同环境细分的扩展(来自“C ++ Primer Plus”一书):

Unix使用: .C.cc.cxx.c

GNU C ++使用: .C.cc.cxx.cpp.c++

数字火星使用: .cpp.cxx

Borland C ++使用: .cpp

Watcom使用: .cpp

Microsoft Visual C ++使用: .cpp.cxx.cc

Metrowerks CodeWarrior使用: .cpp.cp.cc.cxx.c++

不同的环境支持不同的扩展。 我也想回答这个问题,并find这个职位。 基于这篇文章,我想我可能会使用.hpp.cpp来简化跨平台/跨工具识别。

据我所知, .cpp是C ++推荐的扩展。 有些人甚至build议使用.hpp for C ++头文件,只是为了区别于C

虽然编译器不关心你做什么,但这是个人偏好。

我个人使用.cc扩展名为实现文件, .hh为标题和.inl为内联/模板。

如前所述,这主要是品味的问题。

从我所看到的 .cc似乎更多的是“ 开源项目导向 ”,因为它被build议在一些伟大的开源软件编码风格,而。 cpp似乎更加窗户。

—编辑

如上所述,这是“从我看到的” ,这可能是错的。 只是,我所做的所有Windows项目都使用了.cpp和许多开源项目(主要是unix-likes)使用.cc

使用.cc编码样式的示例:

  • Google: http : //google-styleguide.googlecode.com/svn/trunk/cppguide.xml
  • ICL: http : //www.doc.ic.ac.uk/lab/cplus/c++.rules/chap4.html#sect2

其他使用的文件扩展名包括.cxx.C (大写.cxx C)。 我相信Bjarne Stroustrup最初使用.C.cpp是C预处理程序的名称,所以不幸的是它也用于C ++。

只要按照项目/团队使用的惯例。

我个人从未在任何项目中见过.cc ,但是在所有的技术上,编译器都不在乎。

谁会关心开发者的工作,所以我的经验法则就是和你的团队一起工作。 如果你的“团队”是开源社区,那就去找一些非常常见的东西,其中.cpp似乎是最受欢迎的。

几个人说.cc不支持任何东西? 它可能。 C ++从“C with Classes”开始。

确实.cc.cpp也是大多数Unix系统上的命令名(分别是c编译器和c预处理器)。

我专门使用.cpp ,但是我开始在Windows上。 .cc更像是一个Unix约定,尽pipe我在这里看到的越来越less了。 GNU make对.cpp有规则,所以这可能是首选,它在默认情况下在Windows和其他所有环境中都能正常工作。 另一方面,现代C ++根本没有扩展头文件,我真的不喜欢这个。 我的所有项目都使用.h作为头文件,并且通过extern "C"和testing__cplusplus尽可能地支持C和C ++。

另一个选项是.cxx ,其中x应该是正旋转45°。

Windows,Mac和Linux都支持.c++所以我们应该使用它。

与大多数风格的惯例一样,只有两件事情是重要的:

  1. 尽可能保持一致。
  2. 不要devise任何依赖于特定select的东西。

这些看起来可能矛盾,但是它们都有自己的理由。

.C.cc似乎是我见过的(less数)面向Unix的C ++程序的标准。 我自己总是使用.cpp ,因为我只是真的在Windows上工作,而且这是那里的标准,就像永远。

我个人推荐.cpp ,因为…它代表“C Plus Plus”。 当然文件扩展名是首字母缩写,当然这个理由certificate是不足够的,其他重要的东西是不使用shift键(这就排除了.C.c++ ),而且避免了正则expression式中的元字符排除.c++ – 不幸的是你真的不能避免当然。)。

这并不排除.cc ,所以即使它不代表任何东西(或者是否它),对于面向Linux的代码来说,这可能是一个不错的select。

我已经分别使用.C和.h作为源代码和头文件。 一个好的select是,在命令行中,易于使用*.[Ch]来select所有的代码文件。 使用.C可能是不区分大小写的文件系统的问题,但是如果你在同一个目录中有foo.cfoo.C ,那么你应该得到你所得到的:)

cpp = c plus plus,因此我的首选,cc或cxx代表什么?

使用哪些扩展并不重要。 select你喜欢的更多,只要符合命名。 我知道这个命名约定唯一的例外是我无法使WinDDK (或现在是WDK )编译.cc文件。 在Linux上,虽然这不是一个问题。

.cc扩展名是在makefile中使用隐式规则所必需的。 查看这些链接以更好地理解makefile,但主要看第二个,因为它清楚地表明了.cc扩展名的用处:

ftp://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_2.html

https://ftp.gnu.org/old-gnu/Manuals/make-3.79.1/html_chapter/make_10.html

我现在才知道这一点。