首页 > 编程语言 >最佳 C++ 编译器

最佳 C++ 编译器

时间:2023-12-04 17:22:59浏览次数:45  
标签:LLVM C++ Visual Clang 最佳 编译器 支持

最佳 C++ 编译器

Incredibuild Incredibuild 已认证账号   134 人赞同了该文章

 

C++ 是一个“开放”的编程语言,任何人都可以使用自己喜欢的编译器。当然,C++ 编译器的种类也很多。同样, C++ IDE 也不少,我在之前的一个博客中讨论过这个话题。
编译和运行 C++ 代码的平台(或主机),通常称为托管环境。如果 C++ 程序在没有操作系统的帮助下执行,则属于运行在独立环境中。因为缺乏操作系统,独立环境的限制比较多。相应地,在这种环境下运行 C++ 代码的要求也不少,你可以点击链接查看具体要求。也许之后,我将为 C++ 独立环境写一篇专题博客。不过,今天的博客,主要介绍了我认为的一流的编译器工具。让我们一一了解一下。托管环境中的最佳 C++ 编译器
1、Microsoft Visual C++ 编译器


这是微软与Visual Studio 捆绑的 C 和 C++ 编译器。与 Visual Studio 2019 16.10 版本捆绑在一起的编译器版本为 19.28.29914,这个编译器完全支持 C++17 核心语言功能,以及 C++17 代码库功能,部分支持 C++20 。预计Visual Studio 2022(目前还是预览版本)还将包括 Visual C++ 编译器,届时将完全支持 C++ 20 的功能。虽然 Visual C++ 编译器主要用于 Windows 开发,但使用 Windows 子系统进行 Linux(WSL)集成后,也可以用于开发本地 Linux 应用程序。点击查看精彩视频,了解关于这个话题的更多信息。

  广告 加速编译,点击了解Visual studio 官方捆绑插工具  


2、GNU 编译器集合

 

GNU 编译器集合 GCC,是目前最有名的开源工具,可以用来编译多种语言,不仅限于 C 或 C++。GCC 的最新版本 GCC 11 完全支持 C++17 核心语言功能,以及 C++17 代码库功能。除了模块中的一些次要功能外,它还突破性地支持几乎所有的 C++20 语言和库功能。值得关注的是,GCC 11 还包含了 C++ 23 标准初稿的一些功能,这是继 C++ 20 之后 C++ 标准的最新修订版本。
*了解更多 GCC 信息
3、Clang/LLVM

  广告 加速C++编译,获取Incredibuild免费License  


在最近的一篇博客中,我对GCC vs Clang 进行了详细比较。我介绍了这个编译器的体系架构,并描述了 LLVM 后端如何简化优化编译器的过程。Clang/LLVM 12.0,是最新版本,目前完全支持 C++17,对 C++20 也提供了支持。当你阅读完这篇博客,你就会明白为什么许多 C++ 编译器想要将其代码放在这个开源平台上。

4、Intel C++ 编译器


我已经在使用 Intel C++ 编译器(准确来说,是 Intel® oneAPI DPC++/C++ 编译器),主要用于计算密集型应用。我发现这个编译器的性能非常优秀。与Visual Studio 不同,Visual Studio 中包括了用于桌面程序开发的MFC(微软基础类)基础架构,支持 Web 程序的WebVIEW2,Intel 编译器则支持线程构建模块(当前开源为 ONAPI),Data Parallel C++(DPC++),两者的目标明显不同。支持计算密集型应用编译是 Intel 编译器的亮点,这类编译一般需要支持数据并行(使用并行 STL)、现场可编程阵列(FPGA),图形处理单元(GPU)。Intel C++ 编译器的最新版本支持 C++ 17 标准。
5、IBM XLC++


IBMXLC++ 编译器支持 z/OS、Linux on Power、AIX 和 IBMi(与 PASE 一起)等平台。该编译器提供了先进的优化技术,用于开发复杂 C++ 程序的优质代码。最近,IBM 为 Power、AIX 和 IBMz 平台的 Clang/LLVM 项目编译了代码。去年(2020 年),IBM 宣布计划为其 IBMXLC++ 编译器工具链采用 Clang/LLVM 框架。这更有利于 IBM XLC++ 编译器支持最新的 C++ 标准。
独立环境中的最佳 C++ 编译器
1、Keil C++ 编译器

 

µ Vision 是 ARM 出品的基于 Windows 的软件开发平台,用于嵌入式程序开发,支持多种平台(有关Keil µ Vision支持的部分平台列表,请参见下图)。ARM 6 编译器以 Clang/LLVM 编译器工具链为基础,完全支持 C++ 14 标准。此外,该编译器还支持功能安全标准,如 IEC 61508 和 ISO 26262,用于开发功能安全应用程序。此编译器可以直接用于高安全性程序开发,支持使用Arm®TrustZone® 隔离系统中的重要安全组件。使用 Keil µVision C++ 编译器的典型程序包括能源计量、照明、工业网络、报警系统和电机控制。业余程序开发爱好者可免费使用 Keil µ Vision,但程序大小有一些限制。
2、德州仪器 C/ C++ 代码生成工具

 

最初的 TI Arm C/C++ 编译器工具(Arm-CGT-XX)是独立 C/C++ 编译器,目前处于维护阶段。为 Arm Cortex-M 和 Arm Cortex-R 设备编程的较新版本是 TI Arm Clang Compiler Tools (ARM-CGT-CLANG-X),是从开源 Clang/LLVM 编译器工具链派生的一个工具。德州仪器的 ARM Optimizing C/C++ Compiler v20 支持C++ 14 标准。
3、MPLAB XC++ 编译器

 

PIC 和 AVR 微控制器之前一直使用 C 语言编程,不过较新版本的硬件已经开始支持32位(以前是 8 位),并且可以用 C++ 进行编译。Microchip 的MPLAB XC++ 编译器设计以 GCC 为基础,支持 C++03 标准库和 C++03 标准。在收购 Atmel 后,Microchip 成为嵌入式控制方案的行业领导者,其 MPLAB X 开发环境可以在 Windows、Linux 和 OS X 中运行,并与 MPLAB XC++ 编译器绑定。


总结
C++ 语言正在迅速发展,许多编译器团队最近可能也有所察觉,跟上标准并不容易。不过,将编译器建立在一个成熟的开源框架上,比如 Clang/LLVM,是保证支持 C++ 最新功能的好办法。

  广告 如何提高 C/C++ 编译速度,点击获取解决方案  

在这篇博客中,我列出了托管环境和独立环境中的主流编译器。尽管,编译器不完全属于独立或托管的 C++ 环境,例如,EDG ECP 属于C++ 前端,且主要由编译器使用,所以不包含在这个列表中。这个列表中也不包含将 C++ 代码转换成 Java script 的转换器,如 Emscripten。以及类似于MinGW的交叉编译器也不在此列表中。
备注:点击链接查看各种编译器对 C++ 标准的支持。

标签:LLVM,C++,Visual,Clang,最佳,编译器,支持
From: https://www.cnblogs.com/sexintercourse/p/17875458.html

相关文章

  • C++ 内联函数 inline
    宏定义实现和普通函数实现:-宏定义是直接在实现的时候进行代码替换,可能产生结果异常问题。-普通函数实现:调用函数进出函数体的时候时间开销可能过大。1#include<iostream>2usingnamespacestd;3//宏实现4#defineGETMAX(a,b)((a)>(b)?(a):(b))......
  • c++ friend关键字 友元
     在C++中,friend关键字用于声明友元函数或友元类1。友元函数或友元类可以访问当前类的私有成员和保护成员,即使它们不是当前类的成员函数或成员类1。友元函数是一个独立的函数,而友元类是一个类可以访问另一个类的私有成员和保护成员1。例如,如果要声明函数为一个类的友元,需要......
  • C++U5-08-二叉树1
    上节课作业分析讲解视频链接:https://pan.baidu.com/s/1_jaM_TlZmLJX4JbLuJtKzA?pwd=2us4提取码:2us4学习目标  树在C++中,二叉树是一种常用的数据结构,由节点(Node)组成,每个节点可以有最多两个子节点。二叉树具有以下几个主要的作用:存储和组织数据:二叉树可用于存储和组织大......
  • 最佳软件分身工具推荐
    探索最佳软件分身工具:提升工作效率与隐私保护导语:在数字化时代,我们经常需要同时管理多个在线账户、处理敏感数据,并保护个人隐私。为了提高工作效率和信息安全性,使用软件分身工具成为一种理想选择。本文将向您推荐几款最佳软件分身工具,以满足您的需求。VMwareWorkstationVMwar......
  • C++/Filesystem 文件类型
    #include<iostream>#include<filesystem>#include<string>namespacefs=std::filesystem;voiddemo_status(constfs::path&p,fs::file_statuss){std::cout<<p;switch(s.type()){casefs::file_type::none:......
  • C++U3-第3课-结构体
    上节课作业:链接:https://pan.baidu.com/s/1fBx8bS-J_FPDqBzn6Omp-g?pwd=1rn5提取码:1rn5学习目标在C++中,结构体(Struct)是一种用于组合多个相关数据项的自定义数据类型。结构体可以包含不同类型的成员变量和成员函数,并且可以通过.运算符来访问和操作它们。结构体在C++中具有以下......
  • C++-Python_多进程_多线程-协程-异步开发
    python多任务、并发编程等领域并发:宏观上并行,微观上串行并行:宏观上并行,微观上并行并发:I/O密集型作业运行态---阻塞态的转化并行:CPU密集型作业并发(Concurrent)、并行(Parallesim)、多线程(MultiThreaded)、多进程(Multiprocessing)、多任务(Multitasking)、......
  • 2.C语言和C++的几个标准(2023年12月4号)
    C语言和C++的区别C语言的设计理念:灵活、高效、性能极限C++的设计理念:面向对象为主 CPP:包含C语言(语法有微小差异)面向对象编程泛型编程STL标准模块库C++标准库 C语言是结构化语言:实例:我喜欢一个女孩C语言(......
  • C++中 enum 的使用
    C++中的枚举enum使用如果没有对应的范围限定,会很容易出现重定义的错误。如下的重定义错误,在一个文件中有如下两个枚举,编译时会出现重定义错误enumType{MIN_TYPE,MAX_TYPE,INPUT_TYPE};enumMode{CITY,INPUT_TYPE};此时虽然是不同的枚举类型,......
  • LeetCode-Java:121. 买卖股票的最佳时机
    题目给定一个数组prices,它的第i个元素prices[i]表示一支给定股票第i天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,......