C++ 的不同编译器

17 Mar 2025 | 4 分钟阅读

本文介绍了许多与编译器相关的方面。在这里,我们描述了 C++ 语言与编译器之间的交互。为什么需要编译器?以下是一些解决方案;众所周知,计算机可以读取由 0 和 1 组成的机器语言指令。源代码是用高级语言编写的。

为了让计算机能够理解,我们需要翻译或解释器。编译器是与它通信最用户友好的方法。编译每个 C++ 文件后会创建一个目标文件。编译器首先执行预处理器,然后进行编译阶段,并生成目标文件。C++ 程序中有数百行的模板编程。因此,用户必须提高他们的生产力。

C++ 编译过程

头文件 (.h) 和源代码 (.cpp) 共同构成一个 C++ 程序。此外,<include> 命令用于将开源库或文件连接到 C++ 程序。

C++ 程序编译涉及三个阶段

  • 预处理:在此步骤中,使用源 CPP 文件中包含的文件,并在此处更改代码。此过程不涉及使用头文件。同样,当宏和内联函数在被调用之前使用时,预处理会替换它们的代码。
  • 编译:文件预处理后,将其编译以创建扩展名为“.o”的目标文件。
  • 链接:连接过程涉及将目标文件链接到应用程序使用的任何第三方应用程序和函数。软件最终将正确运行。

托管环境中顶级的 C++ 编译器

1. Microsoft Visual C++ 编译器

DIFFERENT COMPILERS FOR C++

Microsoft 在 Visual Studio 中包含了此 C++ 和 C 编译器。当前的编译器版本 19.28.29914,随 Microsoft Visual 2019 版本 16.10 提供,完全支持 C++17 核心语言增强功能,包括 C++17 库元素,并部分支持 C++20 元素。

预计将在 Visual Studio 2022(目前以预览版提供)中包含 Visual C++ 编译器,这将完全支持 C++20 功能。Visual C++ 编译器可用于创建本机 Linux 程序,尽管它通常用于使用适用于 Linux 的 Windows 子系统 (WSL) 接口进行 Windows 开发。

2. GNU 编译器集合

DIFFERENT COMPILERS FOR C++

GNU 编译器集合(GCC)可能是最好的开源应用程序之一。除了 C 和 C++,它还是一个可用于汇编许多其他语言的工具集。GCC 11 是 GCC 的最新版本,完全支持 C++17 核心语言和 C++17 库功能。除了模块中的一些小改进之外,它还为几乎所有 C++20 语言和库功能提供了实验性证据。值得注意的是,GCC 11 还包含了 C++23 标准草案的特性,该标准是 C++ 标准的第 23 次迭代,紧随 C++20 之后。

3. Clang/LLVM

DIFFERENT COMPILERS FOR C++

在我的最新博客文章之一中,我对比了 GCC 和 Clang。我详细阐述了编译器的设计以及 LLVM 后端如何使其易于集成新的优化。Clang/LLVM 的最新版本 12.0 完全支持 C++17,并实验性支持 C++20。阅读本页时,您会发现为什么许多其他 C++ 编译器选择在此开源框架上构建其软件。

4. Intel C++ 编译器

DIFFERENT COMPILERS FOR C++

对于需要大量工作的应用程序,我使用过 Intel C++ 编译器(特别是 Intel® oneAPI DPC++/C++ 编译器),并且对其性能感到非常满意。与 Visual Studio 不同,后者支持 WebView2 以用于基于 Web 的应用程序以及 MFC(Microsoft 基础类)以用于计算机应用程序开发,而 Intel 的编译器支持数据并行 C++ (DPC++) 和线程构建块(目前作为 oneAPI 开源),这表明了重点的不同。Intel 编译器在具有并行计算(与并行 STL)、现场可编程门阵列 (FPGA) 支持和图形处理单元 (GPU) 支持的计算成本程序方面表现出色。Intel C++ 编译器的最新版本与 C++17 标准兼容。

5. IBM XLC++

DIFFERENT COMPILERS FOR C++

对于 z/OS、Ubuntu on Power、Unix 和 Aix I 等操作系统,IBM XLC++ 编译器可用(带 PASE)。由于此编译器提供了复杂的优化技术,因此可以使用优化代码创建复杂的 C++ 应用程序。IBM 已向 Clang/LLVM 项目提供了适用于 Powers、Ibm 和 Aix Z 系统的代码。IBM 去年(2020 年)表示,IBM XLC++ 编译器工具集将使用 Clang/LLVM 框架。因此,IBM XLC++ 编译器应该能够毫无问题地处理最新的 C++ 标准。

6. MinGW

它是一个开源程序,不需要任何其他组件,并且与 Microsoft Windows 开发完美集成。它包含用于 C、C++ 和 Fortran 编程语言的 GCC 编译器。由于 GCC 中 ANSI 遵从性提供了高度的可移植性,客户更喜欢此编译器而不是许多其他编译器。使用 Windows 32 或 min32,可以集成自定义项目以及其他软件包,并且在特定版本中使用获得许可。我们通过 G++ 完全访问源代码。它的速度和易用性(需要 DLL 库)是主要优点。

结论

从编程角度来看,IDE 和 C++ 编译器非常重要。我们可以使用这些 IDE 创建和开发几个复杂的 C++ 应用程序。这些 IDE 的主要优点是它们允许我们在一个 IDE 内完成编译过程。

IDE 还附带源代码编辑器,可让我们编写代码。此类开源编辑器提供了许多功能,例如自动完成和 IntelliSense,可帮助我们更快地编写代码。