我已经看到C++代码保存为文件.cc和.cpp文件.这两者有区别吗?
在谷歌的风格指南似乎在暗示.cc,但没有提供任何解释.
我主要关注Linux系统上的程序.
Jar*_*Par 645
在一天结束时无关紧要,因为C++编译器可以处理任何格式的文件.如果这是您团队中的一个真正问题,请翻转硬币并继续实际工作.
Cli*_*ord 272
GNU GCC承认所有以下为C++文件,并且将使用C++编译无论您通过GCC或g调用它++: ,.C,.cc,.cpp,.CPP,.c++,.cp或.cxx.
注意.C- GCC中的情况很重要,.c是一个C文件,.C而是一个C++文件(如果你让编译器决定它编译的是什么).
GCC还支持其他后缀来指示特殊处理,例如,.ii文件将被编译为C++,但不进行预处理(用于单独的预处理代码).所有公认的后缀都在gcc.gnu.org上详细说明
Joh*_* S. 198
关于哪些用于makefile和其他工具的好建议,考虑非编译器工具,同时决定使用哪个扩展是帮助找到适合您的答案的好方法.
我只是想添加以下内容来帮助我找到的一些.ccvs .cpp信息.以下是按不同环境细分的扩展(来自"C++ Primer Plus"一书):
UNIX使用:.C,.cc,.cxx,.c
GNU C++使用: .C,.cc,.cxx,.cpp,.c++
数字火星使用: .cpp,.cxx
Borland C++使用: .cpp
Watcom使用: .cpp
微软的Visual C++使用: .cpp,.cxx,.cc
Metrowerks CodeWarrior开发用途: .cpp,.cp,.cc,.cxx,.c++
不同的环境支持不同的扩展.我也想回答这个问题并找到了这篇文章.基于这个职位,我想我可能会去.hpp和.cpp便于跨平台/跨工具的认可.
Ryu*_*Ryu 70
.cpp据我所知,是C++的推荐扩展.有些人甚至建议使用.hppC++标头,只是为了区别于C.
虽然编译器不关心你做什么,但它是个人偏好.
New*_*biZ 33
我个人使用.cc扩展实现文件,.hh标题和.inl内联/模板.
如前所述,主要是品味问题.
从我所看到的,.cc似乎是更多的" 开源项目导向 ",因为它建议在一些伟大的开源软件编码风格,而.cpp似乎更像是Windowish.
---编辑
如上所述,这是"从我所看到的",它可能是错的.这只是我使用过的所有Windows项目.cpp,以及许多开源项目(主要是unix-like)使用.cc.
示例编码样式使用.cc:
Rol*_*ien 12
另一种选择是.cxx,其中x被认为是一个加旋转45°.
Windows,Mac和Linux都支持,.c++所以我们应该使用它.
Toj*_*oji 10
我个人从未.cc在任何项目中看到我曾经参与过的工作,但从技术上讲,编译器并不关心.
谁会关心开发人员,因此我的经验法则是与您的团队合作.如果您的"团队"是开源社区,请选择一些非常常见的东西,其中.cpp似乎是最受欢迎的.
Ben*_*igt 10
有几个人说.cc不代表什么?它可能.C++起源于"C with Classes".
是的,.cc并且.cpp在大多数Unix系统上也是命令名(分别是c编译器和c预处理器).
我只使用.cpp,但我开始使用Windows..cc更像是一个Unix惯例,虽然我看到它越来越少了.GNU make有.cpp可能是首选的规则,默认情况下它可以在Windows和其他所有内容中使用.另一方面,现代C++根本不使用扩展,我真的不喜欢它.我的所有项目都.h用于头文件,它们通过extern "C"和测试尽可能地支持C和C++ __cplusplus.
你使用哪些扩展并不重要.选择你喜欢的更多,只需与命名一致.我知道这个命名约定的唯一例外是我无法编译WinDDK(或WDK现在是?)编译.cc文件.在Linux上,虽然这几乎不是问题.
小智 8
.C并且.cc似乎是我见过的(少数)面向Unix的C++程序的标准.我一直都在使用.cpp自己,因为我只是真的在Windows上工作,而且那是永远的标准.
我.cpp个人推荐,因为......它代表"C Plus Plus".当然,最重要的是文件扩展名是首字母缩略词,但是如果这个基本原理证明不够引人注目,那么其他重要的事情就是不使用shift键(它排除.C和使用.c++)并尽可能避免使用正则表达式元字符(它排除了.c++-不幸的是,你.当然不能真正避免.)
这不排除.cc,所以即使它并不真正代表什么(或者它是什么?)它可能是面向Linux的代码的一个很好的选择.
我分别使用.C和.h作为源和标题.这个选择的一个好处是,在命令行上,它易于使用*.[Ch]来选择所有代码文件.使用.C可能是不区分大小写的文件系统的问题,但如果你有foo.c和foo.C在同一目录中,你应该得到你得到的:)
正如其他人在我之前写的那样,最后是您的项目/团队/公司所使用的内容。
就我个人而言,我没有使用cc扩展,我试图减少扩展的数量而不是增加它们,除非有一个明确的值(在我看来)。
就其价值而言,这就是我正在使用的:
c- 仅纯 C 代码,没有带方法的类或结构。
cpp- C++代码
hpp- 仅标题代码。实现位于标题中(如模板类)
h- C/C++ 的头文件。我同意可以进行另一种区分,但正如我所写,为了简单起见,我试图减少扩展的数量。至少从我参与过的C++项目来看,h纯C的文件比较少见,因此我不想添加另一个扩展名。
小智 6
.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
我现在才知道这件事.
小智 6
我正在开始一个新的 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)
Run Code Online (Sandbox Code Playgroud)
(注意:没有默认的 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是阻力最小的路径。
| 归档时间: |
|
| 查看次数: |
354506 次 |
| 最近记录: |