C ++代码文件扩展名? .cc vs .cpp
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C ++代码文件扩展名? .cc vs .cpp相关的知识,希望对你有一定的参考价值。
在一天结束时无关紧要,因为C ++编译器可以处理任何格式的文件。如果这是您团队中的一个真正问题,请翻转硬币并继续实际工作。
有几个人说.cc
不代表什么?它可能。 C ++起源于“C with Classes”。
确实,.cc
和.cpp
也是大多数Unix系统上的命令名(分别是c编译器和c预处理器)。
我独家使用.cpp
,但我开始使用Windows。 .cc
更像是一个Unix惯例,虽然我看到它越来越少。 GNU make有.cpp
的规则,所以它可能是首选的,默认情况下它可以在Windows和其他任何东西上运行。另一方面,现代C ++根本不使用扩展,我真的不喜欢它。我的所有项目都使用.h
作为头文件,它们通过extern "C"
和测试__cplusplus
尽可能地支持C和C ++。
与大多数样式约定一样,只有两件事重要:
- 尽可能保持一致使用。
- 不要设计任何取决于所使用的特定选择的东西。
这些似乎可能相互矛盾,但它们各自都有其自身原因的价值。
你使用哪些扩展并不重要。选择你喜欢的更多,只需与命名一致。我知道这个命名约定的唯一例外是我无法编译WinDDK
(或者现在是WDK
?)来编译.cc
文件。在Linux上,虽然这几乎不是问题。
.C
和.cc
似乎是我见过的(少数)面向Unix的C ++程序的标准。我自己总是使用.cpp
,因为我只是在Windows上工作,而且那是永远的标准。
我个人推荐.cpp
,因为......它代表“C Plus Plus”。当然,文件扩展名是首字母缩写词当然是非常重要的,但是如果这个基本原理证明不够引人注目,那么其他重要的事情就是不使用shift键(它排除了.C
和.c++
)并尽可能避免使用正则表达式元字符(排除在外) .c++
- 不幸的是你当然不能真正避开.
。)
这不排除.cc
,所以即使它并不真正代表什么(或者它是什么?)它可能是面向Linux的代码的一个很好的选择。
我分别使用.C和.h作为源和标题。这个选择的一个好处是,在命令行上,它易于使用*.[Ch]
来选择所有代码文件。使用.C
可能是不区分大小写的文件系统的问题,但是如果你在同一目录中有foo.c
和foo.C
,那么你应该得到你得到的东西:)
cpp = c plus plus因此我首选,cc或cxx代表什么?
.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
我现在才知道这件事。
我正在开始一个新的C ++项目,并开始寻找最新的C ++风格。我最终在这里关于文件命名,我想我会分享我如何提出我的选择。开始:
Stroustrup认为这更像是a business consideration than a technical one。
按照他的建议,让我们检查一下工具链的期望。
对于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 favors the .cpp suffix
在定位macOS时,请注意Xcode更喜欢.cpp / .hpp(刚刚在Xcode 10.1上检查过)。您始终可以更改标题模板以使用.h。
对于它的价值,您还可以根据自己喜欢的代码基础做出决定。例如,Google uses .cc和LLVM libc ++使用.cpp。
头文件怎么样?它们是在C或C ++文件的上下文中编译的,因此没有编译器或构建系统需要区分.h和.hpp。然而,编辑器/ IDE的语法突出显示和自动缩进可能是个问题,但是通过将所有.h文件关联到C ++模式可以解决这个问题。例如,我在Linux上的emacs配置在C ++模式下加载所有.h文件,它编辑C头就好了。除此之外,在混合使用C和C ++时,您可以遵循此advice。
我的个人结论:.cpp / .h是阻力最小的路径。
CC是c ++程序中使用的源代码文件的扩展。可以使用各种文本编辑器编辑这些CC文件,但这些文件不可读。
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详细说明
关于哪些用于makefile和其他工具的好建议,考虑非编译器工具,同时决定使用哪个扩展是帮助找到适合您的答案的好方法。
我只是想添加以下内容来帮助我找到一些.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++
不同的环境支持不同的扩展。我也想回答这个问题并找到了这篇文章。基于这篇文章,我想我可能会选择.hpp
和.cpp
来简化跨平台/跨工具识别。
据我所知,.cpp
是C ++的推荐扩展。有些人甚至建议使用.hpp
作为C ++标题,只是为了区别于C.
虽然编译器不关心你做什么,但它是个人偏好。
我个人使用.cc
扩展实现文件,.hh
用于头文件,.inl
用于内联/模板。
如前所述,主要是品味问题。
从我所看到的,.cc
似乎更像是“开源项目导向”,因为它在一些伟大的开源软件编码风格中被建议,而.cpp
似乎更像Windowish。
---编辑
如上所述,这是“从我所看到的”,它可能是错的。只是我所使用的所有Windows项目都使用了.cpp
,而且很多开源项目(主要是unix-like)使用.cc
。
使用.cc
编写样式的示例:
- 谷歌: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
(大写C)。我相信Bjarne Stroustrup最初使用的是.C
。 .cpp
是C预处理器的名称,所以不幸的是它也被用于C ++。
另一种选择是.cxx
,其中x
应该是一个旋转45°的加号。
Windows,Mac和Linux都支持.c++
所以我们应该使用它。
只需按照项目/团队使用的惯例。
我个人从未在任何项目中见过.cc
,但从技术上讲,编译器并不关心。
谁会关心开发人员,因此我的经验法则是与您的团队合作。如果您的“团队”是开源社区,请选择一些非常常见的东西,其中.cpp
似乎是最受欢迎的。
以上是关于C ++代码文件扩展名? .cc vs .cpp的主要内容,如果未能解决你的问题,请参考以下文章
同一段代码,扩展名为cpp就可以成功编译,扩展为c就不能编译,求解答