0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享一些C++的历史进程

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 作者:黄工的嵌入式技术 2020-01-09 14:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在2019年7月,ISO WG21委员会批准了C++ 20的完整草案,11月获得批准,意味着C++ 20将会在今年成为标准。

C++ 软件工程师 Bartek 发布博客,回顾了 C++ 2019 年的发展情况。

Bartek 主要介绍了 2019 年 C++ 特性上的演进、在全球的会议重大进展、相关工具的改进,以及 C++20 新特性的期待。

他总结成三大关注点:

C++20 即将发布

工具,现在编写 C++ 代码更加容易

C++ 在开发者中的稳定地位

从下表可以看出来,在 2019 年,C++ 社区做了许多事情,像我们关注的新特性方面的进展也有不少,比如 Clang 8.0.0、9.0.0 发布、VS 2019 发布与 GCC 9.1 发布等。

简单总结起来,从 Clang 5.0、GCC 8.0、Visual Studio 15.7 和 Intel C++ Compiler 19.0.1 开始,所有编译器都支持 C++ 语言特性。

虽然 C++ 标准库需要其它支持,特别是并行算法和文件系统之类的要点。std::filesystem需要使用到 GCC 8.1(或更高版本的 GCC 9.1)、Clang 3.9(或更高版本 7.0)和 Visual Studio 2017 15.7。

并行算法更新最早在 Visual Studio 2017 15.7 中可用,但随着之后的更新,MSVC 团队添加了更多算法。

关于 C++20 的讨论在今年占据主导地位,目前特性已经冻结,主要特性包括:

模组

协程

标准库 Concepts 的概念

范围

constexpr支持:new/ delete,dynamic_cast,try/ catch,虚拟

constexpr 向量和字符串

计时:日历、时区支持

std::format

std::span

std::jthread

目前流行的编译器已经实现了许多 C++20 特性。Bartek 列了一个 C++20 新特性的小表:

工具方面,首先 Visual Studio 对 C++ 提供了众多新的支持,包括:

使用 Visual Studio IntelliCode 的 AI 辅助代码补全。

C++ MSBuild 和 CMake 项目中对 Clang 和 MSVC 的 Clang-Tidy 的支持。

AddressSanitizer 支持 Windows 上使用 MSVC 编译的项目。

与 CMake 更好地集成。

Concepts 在 16.3 中可用。

全面的to_chars()支持,满足了 C++ 17 的要求。

提供了一个名为 C++ Build Insights 的新工具集合。

Clang/LLVM 提供了许多强大的实用程序,比如:

Clang Tidy

Clang-Include-Fixer

AddressSanitizer

MemorySanitizer

代码分析器 CppDepend v2019.3 增加了对 MISRA 编码准则的支持,VS 2019 支持、QT 项目、简化的 UI、嵌入式项目支持。

PVS-Studio,这是一个使用 C/C++ 和 C# 编写的程序源代码中的错误检测工具,2019 年的一些显着变化包括 .NET Core 3 和 3.1 项目分析、MISRA 准则支持、40 多项新检查、对 Java、SonarQube 插件的支持。

包管理器 Conan 与 Microsoft/vcpkg 也都有一些新变化。

最后 Bartek 介绍了 2019 年 C++ 在开发者人群中的地位依然稳定:

TIOBE 编程语言排行榜中 C++ 排到了第 4 位。

在 StackOverflow 调查中,C++ 位于 C 上方的第 9 位。

在 GitHub 的调查中,C++ 排名第 6。

除了这些榜单,Bartek 自己也做了一个简单的调查问卷,结果显示了关于 C++ 的使用情况,包括使用的标准库版本、工具的选择与对 C++20 新特性的使用等:

总而言之,我认为未来十年我对C ++持乐观态度。不知道以后会发生什么,但是在接下来的十年中,我相信C ++应该处于相对稳定的位置。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 工程师
    +关注

    关注

    59

    文章

    1600

    浏览量

    70652
  • C++
    C++
    +关注

    关注

    22

    文章

    2122

    浏览量

    76712
  • 代码
    +关注

    关注

    30

    文章

    4941

    浏览量

    73148
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    C/C++条件编译

    条件编译是种在编译时根据条件选择性地包含或排除部分代码的处理方法。在 C/C++ 中,条件编译使用预处理指令 #ifdef、#endif、#else 和 #elif 来实现。常用的条件编译指令有
    发表于 12-05 06:21

    C++程序异常的处理机制

    1、什么是异常处理? 有经验的朋友应该知道,在正常的CC++编程过程中难免会碰到程序不按照原本设计运行的情况。 最常见的有除法分母为零,数组越界,内存分配失效、打开相应文件失败等等。 个程序
    发表于 12-02 07:12

    Shell历史命令history用法

    ! 加上命令编号,可以重复执行历史命令。 「示例代码」:!100# 重复执行编号为100的历史命令 3. 使用 !! 重复执行上条命令 「介绍」:!! 用于重复执行上条命令。「示
    发表于 12-02 06:10

    技能+1!如何在树莓派上使用C++控制GPIO?

    在使用树莓派时,你会发现Python和Scratch是许多任务(包括GPIO编程)中最常用的编程语言。但你知道吗,你也可以使用C++进行GPIO编程,而且这样做还有不少好处。借助WiringPi
    的头像 发表于 08-06 15:33 3573次阅读
    技能+1!如何在树莓派上使用<b class='flag-5'>C++</b>控制GPIO?

    适用于SystemC/C++验证的形式化解决方案

    虽然 SystemC/C++ 编程风格已使用多年,但最近出现了一些特定使用模式,它们推动工程团队采用共同的设计流程。这包括抽象算法设计代码用作高层次综合 (HLS) 工具的输入,虚拟平台模型用于早期软件测试,可配置的知识产权 (IP) 模块,等等。
    的头像 发表于 06-24 11:07 1013次阅读
    适用于SystemC/<b class='flag-5'>C++</b>验证的形式化解决方案

    主流的 MCU 开发语言为什么是 C 而不是 C++

    在单片机的地界儿里,C语言稳坐中军帐,C++想分杯羹?难喽。咱电子工程师天天跟那针尖大的内存空间较劲,C++那些花里胡哨的玩意儿,在这儿真玩不转。先说内存这道坎儿。您当stm32f4的256kRAM
    的头像 发表于 05-21 10:33 778次阅读
    主流的 MCU 开发语言为什么是 <b class='flag-5'>C</b> 而不是 <b class='flag-5'>C++</b>?

    Debian和Ubuntu哪个好一些

    兼容性对比Debian和Ubuntu哪个好一些,并为您揭示如何通过RAKsmart服务器释放Linux系统的最大潜能。
    的头像 发表于 05-07 10:58 853次阅读

    使用RTD5.0.0的s32k312,C40_Ip擦除pflash存在一些问题求解决

    我正在使用 RTD5.0.0 的 s32k312,C40_Ip擦除 pflash 存在一些问题: Erase block0(0x420000-0x500000) failed
    发表于 04-11 06:53

    C语言的历史及程序介绍

    电子发烧友网站提供《C语言的历史及程序介绍.pdf》资料免费下载
    发表于 04-09 16:10 0次下载

    C++学到什么程度可以找工作?

    常重要的。这可以是个人项目、开源贡献或是学校作业等,关键是要能展示你解决问题的能力和技术水平。 8. **八股文准备**:针对校招,还需要准备一些经典的面试问题,即所谓的“八股文”,比如常见的算法题、系统
    发表于 03-13 10:19

    源代码加密、源代码防泄漏c/c++与git服务器开发环境

    源代码加密对于很多研发性单位来说是至关重要的,当然每家企业的业务需求不同所用的开发环境及开发语言也不尽相同,今天主要来讲c++及git开发环境的源代码防泄密保护方案。企业源代码泄密场景、在很多
    的头像 发表于 02-12 15:26 876次阅读
    源代码加密、源代码防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c++</b>与git服务器开发环境

    基于OpenHarmony标准系统的C++公共基础类库案例:ThreadPoll

    。每个线程每秒打印1段字符串,10秒后停止。2、基础知识C++公共基础类库为标准系统提供了一些常用的C++开发工具类,包括:文件、路径、字符串相关操作的能力增强接口
    的头像 发表于 02-10 18:09 599次阅读
    基于OpenHarmony标准系统的<b class='flag-5'>C++</b>公共基础类库案例:ThreadPoll

    Spire.XLS for C++组件说明

    Spire.XLS for C++款专业的 C++ Excel 组件,可以用在各种 C++ 框架和应用程序中。Spire.XLS for C+
    的头像 发表于 01-14 09:40 1297次阅读
    Spire.XLS for <b class='flag-5'>C++</b>组件说明

    ads1232获取的数据中经常有一些比较大的值或者一些错误值,这个是因为什么原因?

    数据中经常有一些比较大的值 或者一些错误值,这个是因为什么原因。最后8位数据致在跳动,是不是我的基准电压不够稳定。 -----85b1----- -----858d-----
    发表于 01-08 08:19

    EE-112:模拟C++中的类实现

    电子发烧友网站提供《EE-112:模拟C++中的类实现.pdf》资料免费下载
    发表于 01-03 15:15 0次下载
    EE-112:模拟<b class='flag-5'>C++</b>中的类实现