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++
所以我们应该使用它。
与大多数风格的惯例一样,只有两件事情是重要的:
- 尽可能保持一致。
- 不要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.c
和foo.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
我现在才知道这一点。