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

配置sublime的中的C++编译器(.sublime-build),实现C++20

GCC 4.8: 支持 C++11 (部分)
GCC 4.9: 支持 C++11 和 C++14 (部分)
GCC 5: 完全支持 C++14
GCC 6: 支持 C++14 和 C++17 (部分)
GCC 7: 支持 C++17 (大部分)
GCC 8: 完全支持 C++17,部分支持 C++20
GCC 9: 支持更多的 C++20 特性
GCC 10: 支持大部分 C++20 特性
GCC 11: 更全面地支持 C++20
GCC 12: 支持几乎所有的 C++20 特性
GCC 13 及以后: 增加对 C++20 的完全支持并开始对 C++23 进行支持

如果您发现您并未配置好您的C++,或者说您觉得当前的版本不能支撑日常的学习,那么您需要下载一个

https://github.com/niXman/mingw-builds-binaries/releases

下载之后,解压到一个你知道的文件夹中,打开解压的文件路径,发现有一个bin文件打开他之后,复制上方的文件路径测试一下 g++ 的版本。

环境的配置

工具(tools)— > 编译系统 -----> 新建编译系统… ,将会生成一个*.sublime-build文件,在其中配置C++的JSON文件,当然你也可以修改本身就有的编译文件。

把下列代码复制到上面提到的那个文件中,保存,再次选中刚刚编辑的JSON文件就能编译C++了。

{  "shell_cmd": "g++  -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"",  "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$","working_dir": "${file_path}",  "selector": "source.c++",  "encoding": "gbk",  
}
基础配置法

默认情况下,g++ 编译器通常不会使用最新的 C++ 标准,而是使用一个稳定的默认标准(通常是一个较旧的标准,如 C++14 或 C++17),以确保与旧代码的兼容性。因此,如果你不显式指定 -std=c++20 或 -std=c++23,编译器可能会使用较旧的标准进行编译,这会导致使用新标准中的特性时出现错误。

所以,如果我们想使用最新的编译方式,我们必须要参考上文,我们的编译器最大支持的C++版本,从而更新我们的JSON文件,达到使用最新版本的C++进行编译。

具体更改只有一行代码

{  "shell_cmd": "g++ -std=c++23 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"",  "file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$","working_dir": "${file_path}",  "selector": "source.c++",  "encoding": "gbk",  
}

深入解析
{  "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\"",  //编译命令,使用C++20标准,指定输入和输出编码为UTF-8和GBK,并启用所有警告。如果编译成功,则启动一个新的命令行窗口运行生成的可执行文件,并在运行结束后暂停窗口。"file_regex": "^(..[^:]*):([0-9]+):?([0-9]+)?:? (.*)$", // wrong answer 正则表达式匹配文件名等信息。   "working_dir": "${file_path}",  // working_dir 编译的工作区"selector": "source.c++",  // 对象"encoding": "gbk",  // encoding 编码 : 选择 gbk(国标:包含所有的汉字) "variants":  [  {  "name": "Single File Build", // 只编译 "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\""  },  {  "name": "Single File Run",  //只运行"shell_cmd": "start cmd /c \"\"${file_base_name}\" & pause\""  },  {  "name": "Single File Build & Run", // 编译加运行 "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall \"${file_name}\" -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\""  },  // 下面为多文件编译 , 请勿使用 。{  "name": "Multiple Files Build",  "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o \"${file_base_name}\""  },  {  "name": "Multiple Files Run",  "shell_cmd": "start cmd /c \"\"${file_base_name}\" & pause\""  },  {  "name": "Multiple Files Build & Run",  "shell_cmd": "g++ -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -Wall *.cpp -o \"${file_base_name}\" && start cmd /c \"\"${file_base_name}\" & pause\""  }  ]  }

相关文章:

  • C#初级——结构体
  • Linux中的三类读写函数
  • Cannot perform upm operation: connect ETIMEDOUT 34.36.199.114:443 [NotFound]
  • Android 13 大屏显示时关于SystemUI和Launcher3问题
  • 记录unraid docker更新的域名
  • 万物互联,触手可及“2024南京智慧城市,物联网,大数据展会”
  • Elasticsearch:Golang ECS 日志记录 - zap
  • Sokit(TCP/UDP调试工具)
  • 均匀圆形阵列原理及MATLAB仿真
  • Spring Boot集成Redis与Lua脚本:构建高效的分布式多规则限流系统
  • 人工智能与机器学习原理精解【5】
  • 如何查看cpu架构,查看CPU架构的方法
  • Pytorch深度学习实践(10)循环神经网络RNN
  • 昇思25天学习打卡营第24天|RNN实现情感分类
  • 黑马JavaWeb企业级开发(知识清单)03——HTML实现正文:排版(音视频、换行、段落)、布局标签(div、span)、盒子模型
  • 【comparator, comparable】小总结
  • Bytom交易说明(账户管理模式)
  • CentOS 7 防火墙操作
  • ES6 学习笔记(一)let,const和解构赋值
  • gf框架之分页模块(五) - 自定义分页
  • JAVA_NIO系列——Channel和Buffer详解
  • node-sass 安装卡在 node scripts/install.js 解决办法
  • Otto开发初探——微服务依赖管理新利器
  • python 学习笔记 - Queue Pipes,进程间通讯
  • SpriteKit 技巧之添加背景图片
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 通过几道题目学习二叉搜索树
  • 深度学习之轻量级神经网络在TWS蓝牙音频处理器上的部署
  • 关于Android全面屏虚拟导航栏的适配总结
  • 正则表达式-基础知识Review
  • ​ssh-keyscan命令--Linux命令应用大词典729个命令解读
  • ​如何防止网络攻击?
  • (~_~)
  • (Demo分享)利用原生JavaScript-随机数-实现做一个烟花案例
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (PADS学习)第二章:原理图绘制 第一部分
  • (层次遍历)104. 二叉树的最大深度
  • (第二周)效能测试
  • (回溯) LeetCode 40. 组合总和II
  • (接口封装)
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (限时免费)震惊!流落人间的haproxy宝典被找到了!一切玄妙尽在此处!
  • (源码分析)springsecurity认证授权
  • *2 echo、printf、mkdir命令的应用
  • ... 是什么 ?... 有什么用处?
  • .Net 4.0并行库实用性演练
  • .Net 8.0 新的变化
  • .net core使用ef 6
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .NET MVC第三章、三种传值方式
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .Net(C#)常用转换byte转uint32、byte转float等
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)