当前位置: 首页 > backend >正文

ubuntu20.04vscode使用C++20(调整gcc版本vscode设置)

Ubuntu 20.04 上使用 GCC 9.4.0 时,可以部分支持 C++20 标准,但完整功能需要更高版本的 GCC(如 10+)。以下是具体操作指南:


一. 升级 GCC 以获得完整 C++20 支持(推荐)

GCC 10+ 对 C++20 的支持更完善(如 ConceptsRanges 等)。在 Ubuntu 20.04 上可通过以下步骤升级:

步骤 1:添加 Ubuntu Toolchain PPA
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
步骤 2:安装 GCC 11(或更高版本)
sudo apt install gcc-11 g++-11
步骤 3:切换默认 GCC 版本(可选)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 100
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 100
# 验证版本
gcc --version
g++ --version
使用新版本编译(无需切换默认版本):
g++-11 -std=c++20 -o your_program your_source.cpp

二. 完整 C++20 示例(需 GCC 11+)

如果你升级到 GCC 11+,可尝试以下代码:

#include <iostream>
#include <ranges>
#include <vector>int main() {// C++20 范围视图(Ranges)std::vector<int> nums = {1, 2, 3, 4, 5};auto even = nums | std::views::filter([](int n) { return n % 2 == 0; });for (int n : even) {std::cout << n << " "; // 输出: 2 4}return 0;
}

编译命令:

g++-11 -std=c++20 -o ranges_example ranges_example.cpp

三.IDE部分处理

在前文我们已经可以通过命令行来使用C++20对单个cpp文件进行编译,但是很多时候我们希望使用vscode的自动化编译处理,比如F5直接进行调试,Ctrl+Shift+B编译,Ctrl + Alt +N编译并运行这样子,因此,需要在vscode的.vscode文件夹中增加以下更改
在这里插入图片描述

3.1 tasks.json

在这里插入图片描述

3.2 c_cpp_properties.json

{"configurations": [{"name": "Linux","compilerPath": "/usr/bin/g++-11","cStandard": "c17","cppStandard": "c++20","intelliSenseMode": "gcc-x64","includePath": ["/usr/include/c++/11",       // 关键路径:GCC 11 的头文件"/usr/include/x86_64-linux-gnu/c++/11","${workspaceFolder}/**"]}],"version": 4
}
http://www.xdnf.cn/news/8065.html

相关文章:

  • 【Spark集成HBase】Spark读写HBase表
  • 深度解析Pytest中Fixture机制与实战案例
  • VSCode GitHub Copilot 安装与使用完全指南
  • (初级)前端初学者入门指南:HTML5与CSS3核心知识详解
  • 【Ubuntu修改串口延时(Latency Timer)为1毫秒(设备拔插或系统重启后自动生效)】
  • 矩阵短剧系统:如何用1个后台管理100+小程序?技术解析与实战应用
  • SQL概述和定义
  • HarmonyOS开发-自定义倒计时功能
  • 基于系统整合的WordPress个性化配置方法深度解析:从需求分析到实现过程
  • SQLite 创建表
  • Rust 创建并编译一个可供 C 或其他语言调用的动态链接库
  • LInux—shell编程
  • docker-volume-backup 备份 ragflow volumes
  • Java虚拟机 -方法调用
  • 第三次中医知识问答模型微调
  • 桥接智能制造:PROFINET与Devicenet混合架构赋能汽车擦净机器人升级
  • 人工智能在工业自动化中的应用与未来趋势
  • Leetcode 1522. N 叉树的直径
  • ShenNiusModularity项目源码学习(28:ShenNius.Admin.Mvc项目分析-13)
  • 冒险岛(MapleStory) 083脚本教程
  • Scrapy爬取heima论坛所有页面内容并保存到MySQL数据库中
  • SQL语句面试题
  • Ubuntu 22.04上升级Node.js版本
  • Web安全与漏洞挖掘
  • C++ inline 内联函数
  • 【PhysUnits】7 类型整数基本结构体(basic.rs)
  • 掩膜合并代码
  • 力扣算法---哈希表总结篇
  • 【无标题】Spring AI 1.0 正式发布!核心内容和智能体详解
  • upload-labs通关笔记-第15关 文件上传之getimagesize绕过(图片马)