C++ 中 .cc 和 .cpp 文件扩展名之间的区别
如果你曾经在 Linux 和 Windows 等不同系统上使用过 C++,那么你一定遇到过 .cc
和 .cpp
文件扩展名。在互联网上,你会发现许多消息来源说这些文件扩展名之间没有区别,对此确实存在很多混淆。
在本文中,我们将讨论这些 C++ 文件扩展名的细微差别以及它们之间的区别。但在我们开始比较这两个文件扩展名之前,让我们首先收集有关这两个文件扩展名基础的信息。
.cpp
文件扩展名
扩展名为 .cpp
的文件是 C++ 源代码文件。这些文件也称为实现文件,因为它们具有头文件中声明的方法的定义。
该文件旨在将 C++ 项目的接口与实现分开。这样,成员函数的所有声明都在头文件中进行,并且相同的详细信息保存在 .cpp
文件中。
我们可以将 .cpp
文件用作编写 C++ 应用程序的简单文件或用作类实现的文件。在面向对象编程的情况下,.cpp
文件用于类定义。
为此,类的所有数据成员和函数都在头文件中声明。该文件引用文件开头的 include
语句中的头文件。
.cpp
文件与 Windows 操作系统兼容;使用一些外部程序,它们也适用于 Linux 和 Mac 操作系统。
.cc
文件扩展名
扩展名为 .cc
的文件是 C++ 源代码文件。这可以包含单个程序以及编译成机器代码的函数。
这些文件与 Mac、Linux 和 Windows 操作系统兼容,并受到这些操作系统上的各种程序的支持。
有关文件扩展名的完整列表,请参阅 this 文档。
C++ 中 .cc
和 .cpp
文件扩展名之间的相似之处
.cc
和 .cpp
文件扩展名并不相同,但它们是相关的,因为它们都用作 C++ 文件扩展名。对于编译器,两者之间没有区别。
C++ 编译器可以自动处理所有 C++ 扩展而不会造成任何麻烦。GNU GCC 编译器将所有这些扩展名视为 C++ 文件:.cc
、.c
、.c++
、.cp
、.cxx
、.cpp
、.CPP
,并始终使用 C++ 编译来编译它们,而我们不必使用 GCC 调用它。
虽然 .cpp
是推荐的 C++ 文件扩展名,但它更多的是你决定使用的个人偏好。它也可能取决于项目的整个团队,几乎不会产生任何差异。
如果项目与开源相关,最好使用社区中常见的 .cpp
。这就是这两个文件扩展名是如何相关的。
现在让我们深入探讨期待已久的讨论:.cc
和 .cpp
文件扩展名之间的区别。
C++ 中 .cc
和 .cpp
文件扩展名之间的区别
.cc
和 .cpp
文件扩展名之间的差异可以根据各种因素进行总结。其中包括工作环境、操作系统、旧约定以及这些文件扩展名的来源。
以下是这两个文件扩展名之间的所有区别点:
-
不同的环境支持不同的文件扩展名。
.cc
文件扩展名主要由 Unix、GNU C++、Clang、Microsoft Visual C++ 和 Metrowerks CodeWarrior 支持。另一方面,GNU C++、Clang、Digital Mars、Borland C++、Watcom、Microsoft Visual C++ 和 Metrowerks CodeWarrior 支持
.cpp
文件扩展名。这种兼容性区别有助于跨平台识别并使代码具有可移植性。 -
操作系统在这里也扮演着重要的角色。对于 Unix 和 Linux,约定是
.cc
,而对于 Windows,它是.cpp
。你将看到
.cc
文件扩展名更常用于 Linux/Unix 系统,而.cpp
文件主要用于 Windows,因为它会导致.C
文件扩展名出现问题。另一方面,对于 macOS,Xcode 首选.cpp
文件扩展名。 -
这两种文件类型的起源也有一些差异。最初,
.cpp
被用作 C++ 文件的约定,因为它代表 C plus plus,用作 C++ 文件扩展名听起来合乎逻辑。由于当时
cpp
已经作为 C 预处理器存在,所以有可能将.cpp
文件与.i
文件混淆(cpp
调用的扩展)。所以最初,扩展名改为.cc
。随着时间的推移,由于同义词的缩写,只有
.cpp
变得更受欢迎。 -
毫无疑问,与 Linux 和 Unix 相比,Windows 是迄今为止最常用和流行的操作系统。由于 Windows 在 Linux 和 Unix 系统上的普及,
.cpp
文件扩展名更常用。 -
另一个可以区分这两个文件扩展名的外部因素是代码库的使用。例如,Google 使用
.cc
文件扩展名,而 LLVM libc++ 使用.cpp
文件扩展名。
结论
在本文中,我们了解了 .cc
和 .cpp
文件扩展名如何用于不同平台和操作系统(如 Unix、Mac 和 Windows)上的 C++ 文件。我们还讨论了这两个文件扩展名的不同之处以及它们之间的关系。
同样,完全由开发人员根据需要选择任何文件扩展名。这就是本文的全部内容。