lint
关心,.C
是C ++和.c
是C,没有任何认识.cc
或.cpp
。至少在AIX 6.1上。
.cc
。
lint
关心,.C
是C ++和.c
是C,没有任何认识.cc
或.cpp
。至少在AIX 6.1上。
.cc
。
Answers:
归根结底,这并不重要,因为C ++编译器可以处理两种格式的文件。如果这是您团队中的实际问题,请掷硬币并继续进行实际工作。
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上进行了详细说明
关于在makefile和其他工具上使用哪种好建议,在确定使用哪种扩展名的同时考虑非编译器工具,是帮助找到适合您答案的好方法。
我只是想添加以下内容,以帮助我找到一些.cc
vs .cpp
信息。以下是按不同环境细分的扩展(来自“ C ++ Primer Plus”书):
UNIX使用:.C
,.cc
,.cxx
,.c
GNU C ++用途: .C
,.cc
,.cxx
,.cpp
,.c++
Digital Mars的用途: .cpp
,.cxx
Borland C ++使用: .cpp
Watcom的用途: .cpp
微软的Visual C ++用途: .cpp
,.cxx
,.cc
Metrowerks CodeWarrior开发用途: .cpp
,.cp
,.cc
,.cxx
,.c++
不同的环境支持不同的扩展。我也一直想回答这个问题,并找到了这篇文章。基于这篇文章,我认为我可能会喜欢跨平台/跨工具识别.hpp
并.cpp
为之提供便利。
.cpp
?
.cpp
用于C ++源文件。(引用的答案指出“ cpp”是C预处理程序的缩写。)
.cpp
据我所知,是C ++的推荐扩展。甚至有人建议使用.hpp
C ++标头,以区别于C。
尽管编译器不在乎您做什么,但这是个人喜好。
我个人将.cc
扩展名用于实现文件,.hh
标头和.inl
内联/模板。
如前所述,这主要是口味问题。
从我所看到的来看,.cc
似乎更像是“ 面向开放源代码项目 ”,正如一些出色的开放源代码编码风格所建议的那样,而。cpp
似乎更像窗口。
-编辑
如前所述,这是“从我所见”,这可能是错误的。只是我从事过的所有Windows项目都在使用.cpp
,许多开放源代码项目(主要是在类Unix上)都在使用.cc
。
使用.cc
以下示例编码风格:
-*- C++ -*-
标记放在标题llvm.org/docs/CodingStandards.html中;Mozilla编码风格建议.cpp / .hdeveloper.mozilla.org/en-US/docs/Mozilla/ Developer_guide /… ;KDE似乎也使用.cpp / .h quickgit.kde.org
几个人说.cc
不代表什么?它可能。C ++从“带类的C”开始。
诚然 .cc
并且.cpp
在大多数Unix系统上(分别是c编译器和c预处理器),它们也是命令名称。
我只使用.cpp
Windows,但是我是从Windows开始的。.cc
尽管我在那儿看到的越来越少,但它更像是Unix惯例。GNU make具有适用于此的规则,.cpp
因此它可能是首选,它将默认在Windows以及其他所有版本上运行。另一方面,现代C ++完全不使用标头扩展名,我真的不喜欢这样。我所有的项目都使用.h
头文件,并且通过extern "C"
和测试,它们都尽可能支持C和C ++ __cplusplus
。
我个人从未见过 .cc
在我从事的任何项目中见过,但从技术上讲,编译器不会在意。
谁在乎的是在您的源代码上工作的开发人员,所以我的经验法则是与您的团队相适应。如果您的“团队”是开源社区,则选择一些非常常见的东西,其中.cpp
似乎最喜欢这些东西。
.cc
用作C ++实现文件的文件扩展名
.C
并且.cc
似乎是我见过的(很少)面向Unix的C ++程序的标准。我一直在用.cpp
自己,因为我只在Windows上真正工作,并且从那以后一直是我的标准。
我.cpp
个人推荐,因为...它代表“ C Plus Plus”。当然,文件扩展名是首字母缩写是至关重要的,但是如果此原理不能证明是令人信服的,则其他重要的事情是不使用shift键(排除.C
和.c++
),并在可能的情况下避免使用正则表达式元字符(排除.c++
-不幸的是,你不能真正避免.
当然情况。)
这并不排除.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
我现在才知道这一点。
.cpp
文件。别担心 !:-)
.C
在不区分大小写的文件系统的系统上使用时可能会出现问题。例如,我认为就make
使用.cc
over 而言,没有任何特别的优势.cpp
。Makefile与.cpp
C ++源文件配合使用时效果很好。
我正在启动一个新的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是阻力最小的途径。