玩转VS code 之 C/C++ 环境配置篇

PS:俺是菜鸟,整理和踩坑试错花了不少时间,如果这篇文章对您有用的话,请麻烦您留下免费的赞赞,赠人玫瑰,手留余香,码字踩坑不易,望三连支持

上一篇:玩转 VS code 之下载篇

Msys2

MinGW也可以,但我用的是msys2

下载Msys2

地址:MSYS2

 

 安装Msy2

 无脑同意直到结束

 

 完成mingw工具链安装

打开页面

 输入命令,更新(安装文件是最新的可以直接下一步)

pacman -Syu

更新完毕以后会强制关闭终端,从开始菜单运行“MSYS2 MSYS”

使用以下命令更新其余基本软件包

pacman -Syu

 输入以下命令完成mingw工具链安装

pacman -S --needed base-devel mingw-w64-x86_64-toolchain

 检查编译器配置是否成功

编译器安装完成后,win+R在cmd窗口输入依次下面俩条命令,检查编译器配置是否成功

gcc -v

gdb -v

C/C++ 环境配置 

因为配置了C++环境,C语言也能直接用,我就直接配置C++的了

小白版

经我几经踩坑测试删减而成,亲测可用(一把辛酸泪)

后面还有进阶版,要改的一样,但是多了很多参数和注释,有兴趣滴大佬可以看一下

改几处即可快速上手使用使用,要改的已经标出,根据自己安装路径进行更改

 先建一个叫做.vscode的文件夹(放配置文件滴,源代码不要放进去,放进去会咋样我也不道啊)

然后在里面建4个一样名字的json文件,把我的代码放进去,然后,修改几处标出的地方就可以了

launch.json
{"version": "0.2.0","configurations": [{"name": "弹窗输出","type": "cppdbg","request": "launch","program": "C:\\windows\\System32\\cmd.exe","args": ["/C","${fileDirname}\\${fileBasenameNoExtension}.exe","&","pause"],"cwd": "${fileDirname}","environment": [],"externalConsole": true,"MIMode": "gdb","miDebuggerPath": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\gdb.exe", //改成自己的路径的gdb.exe"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "mytask"},{"name": "终端输出","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\gdb.exe", //改成自己的路径的gdb.exe"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "myrun"}]
}
tasks.json
{"version": "2.0.0","tasks": [{"type": "shell","label": "mytask","command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //改成自己的路径"args": ["-fexec-charset=gbk","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe",],"problemMatcher": ["$gcc"],"group": "build","detail": "弹窗输出"},{"type": "shell","label": "myrun","command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //改成自己的路径"args": ["-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {},"problemMatcher": ["$gcc"],"group": "build","detail": "终端内输出"},{"type": "cppbuild","label": "run","command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //改成自己的路径"args": ["-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {},"problemMatcher": ["$gcc"],"group": "test","detail": "终端内输出"}]
}
c_cpp_properties.json
{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**"],"defines": ["_DEBUG","UNICODE","_UNICODE"],"compilerPath": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //改成自己的路径"cStandard": "gnu17","cppStandard": "gnu++17","intelliSenseMode": "${default}"}],"version": 4
}
settings.json

这个不太重要,好像没有都能跑代码

{"files.associations": { //配置语言的文件关联,优先级高于已安装语言的默认关联。"ostream": "cpp"},"workbench.editor.autoLockGroups": {"workbench.input.interactive": true //交互窗口},"files.autoGuessEncoding": true, //编辑器将尝试在打开文件时猜测字符集编码。还可以按语言配置此设置."files.encoding": "gbk" //在读取和写入文件时使用的默认字符集编码。
}

注意

系统弹出的小黑窗是gbk编码(chcp 936) 用chcp 可以查看 编码格式

用 chcp + 对应编码代码可以暂时更改编码格式,chcp 936即可改为gbk格式

而vscode的默认编码是utf-8,它的终端也是 (chcp 65001)

编码格式不同,有时使用中文会乱码

文件乱码,我们可以选择正确的编码格式重新打开,就正常了

但是输出乱码就麻烦了,经过踩坑,我的代码可以避免大部分的乱码

我设置了三个输出方式,俩个是终端内输出,一个是弹出窗输出,推荐弹出框(基本没问题)

 可以右上角启动,也可以左上角启动,推荐左边的(有下拉框)

 也可以F5快捷键调试

使用终端输出的时候,输出别有弹窗,不然,弹窗里的字是乱码的,但是终端立的正常

举个栗子

 

 这时该咋整呢?

都有弹窗了,那肯定用弹窗输出呗

所以首推弹窗式,但是正常都能用

(如果这都不行的话,那我也没办法,菜鸟水平就到这里了,别的我也不会昂) 

大师版

小白进阶版,要改的一样,但是多了很多东西,只有俩个大改,还有俩个一样的,从上面拿呗

核心内容大同小异(小白版是这里精炼下来滴),胜在注释多,可选参数多

launch.json
    // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387// launch.json指导了运行和调试。// 用调试器gdb我们就可以逐步运行我们的程序并且监视运行的情况,从而找出bug。{"version": "0.2.0","configurations": [//配置列表。使用 IntelliSense 添加新配置或编辑现有配置。{"name": "弹窗输出", //配置名称;显示在启动配置下拉菜单中。"type": "cppdbg", //配置类型。 cppdbg: C++ (GDB/LLDB)"request": "launch", //请求配置类型。可以是“启动”或“附加”。// 第一种写法,另一个看下面的案例"program": "C:\\windows\\System32\\cmd.exe", //打开cmd"args": ["/C","${fileDirname}\\${fileBasenameNoExtension}.exe", //程序可执行文件的完整路径。"&", // 连接多个命令"pause" //避免程序运行完后闪退,相当于c++的system("pause");],"stopAtEntry": false, //可选参数。如果为 true,则调试程序应在目标的入口点处停止。如果传递了 processId,则不起任何作用。"cwd": "${workspaceFolder}", //目标的工作目录。"environment": [ //要添加到程序环境的环境变量//比如: [ { "name": "config", "value": "Debug" } ],而不是 [ { "config": "Debug" } ]。],"externalConsole": true, //如果为 true,则为调试对象启动控制台。如果为 false,它在 Linux 和 Windows 上会显示在集成控制台中。"MIMode": "gdb", //指示 MIDebugEngine 要连接到的控制台调试程序。允许的值为 "gdb"、"lldb"。"miDebuggerPath": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\gdb.exe", //MI 调试程序(如 gdb)的路径。如果未指定,将首先在路径中搜索调试程序。/*修改成自己bin目录下的gdb.exe,这里的路径和电脑里复制的文件目录有一点不一样,这里是两个反斜杠\\*/"setupCommands": [ //为了安装基础调试程序而执行的一个或多个 GDB/LLDB 命令{"description": "为 gdb 启用整齐打印", //此命令的可选说明。"text": "-enable-pretty-printing", //要执行的调试命令。"ignoreFailures": true //此命令的可选说明。}],"preLaunchTask": "mytask" //调试会话开始前要运行的任务,是之前在task里的第一个label(自定义名字)},{"name": "终端输出","type": "cppdbg","request": "launch",//第二种写法"program": "${fileDirname}\\${fileBasenameNoExtension}.exe", //程序可执行文件的完整路径。"args": [//传递给程序的命令行参数。],"stopAtEntry": false, //可选参数。如果为 true,则调试程序应在目标的入口点处停止。如果传递了 processId,则不起任何作用。"cwd": "${fileDirname}", //目标的工作目录。"environment": [], //要添加到程序环境的环境变量"externalConsole": false, //默认false,即不打开小黑窗,直接在vscode终端输出,vscode右上角的就是如此// 注意 弹出窗口是系统的,gbk编码,终端的是默认utf-8,中文可能会乱码,嫌麻烦可以直接改true"MIMode": "gdb", //指示 MIDebugEngine 要连接到的控制台调试程序。允许的值为 "gdb"、"lldb"。"miDebuggerPath": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\gdb.exe", //MI 调试程序(如 gdb)的路径。如果未指定,将首先在路径中搜索调试程序。/*修改成自己bin目录下的gdb.exe,这里的路径和电脑里复制的文件目录有一点不一样,这里是两个反斜杠\\*/"setupCommands": [ //为了安装基础调试程序而执行的一个或多个 GDB/LLDB 命令{"description": "为 gdb 启用整齐打印", //任务说明"text": "-enable-pretty-printing", //要执行的调试命令"ignoreFailures": true //如果为 true,应忽略此命令的失败。默认值为 false。},{"description": "将反汇编风格设置为 Intel", //任务说明"text": "-gdb-set disassembly-flavor intel", //要执行的调试命令"ignoreFailures": true //如果为 true,应忽略此命令的失败。默认值为 false。}],// "preLaunchTask": { //调试会话开始前要运行的Grunt任务。//     "task": "mytask",//要自定义的Grunt 任务。//     "type": "grunt",//     "args": [],//要传递给 grunt 任务的命令行参数//     "file": ""//提供任务的 Grunt 文件。可以省略。// }, "preLaunchTask": "mytask" //调试会话开始前要运行的任务,是之前在task里的第一个label(自定义名字)}]}
tasks.json
// tasks.json会指导vsc编译、运行你的文件。
// See https://go.microsoft.com/fwlink/?LinkId=733558  // 查看官方文档
// vsc会为你默认生成一个模板,如果你安装了C/C++ Extension,intellisense会为你解释每一行的意义。
// 悬停以查看现有属性的描述。
// ${file}	你窗口正在显示的这个文件
// ${fileDirname}	${file}所在的文件夹
// ${fileBasenameNoExtension}	去掉文件尾名的文件名
// ${workspaceFolder}	就是你最开始打开的文件夹,大写名字的那个
{"version": "2.0.0", // 配置的版本号。"tasks": [ //任务配置。通常是外部任务运行程序中已定义任务的扩充。{"type": "shell", //定义任务是被作为进程 process 运行还是在 shell 中作为命令运行。"label": "mytask", //取个名字,不过要记得,待会 launch.json 的 preLaunchTask 要用"command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //执行编译的编译器或脚本的路径 //g++ 适合于C++。"args": [ //方括号里是传给g++的命令行参数"-g", //指定输出文件的路径和名称"${file}", //指定要编译的是当前文件"-o", //指定输出文件的路径和名称"${fileDirname}\\${fileBasenameNoExtension}.exe", //承接上一步的-o,让可执行文件输出到源码文件所在的文件夹下的bin文件夹内,并且让它的名字和源码文件相同"-std=gnu++17", // 语言标准"-fexec-charset=GBK", // 生成的程序使用GBK编码"-fdiagnostics-color=always", //用于在编译时启用彩色输出以改善可读性// "-I", //头文件(自己写的)// "-lfunc", //外部库的名字// "-L./", //外部库的路径// "-Wall", // 开启额外警告// "-static-libgcc", // 静态链接libgcc// "F:\\vscode\\my vscode",],"presentation": { //配置用于显示任务输出并读取其输入的面板。"echo": true, //控制是否将执行的命令显示到面板中。"reveal": "always", //控制运行任务的终端是否显示。可按选项 "revealProblems" 进行替代。"focus": false, //控制面板是否获取焦点。默认值为“false”。如果设置为“true”,面板也会显示。"panel": "new", // 控制是否在任务间共享面板。同一个任务使用相同面板还是每次运行时新创建一个面板。//new 每个进程创建新窗口"showReuseMessage": false, //控制是否显示“终端将被任务重用,按任意键关闭”提示。"clear": false //控制是否在执行任务之前清除终端。},"options": { // 其他命令选项"cwd": "${fileDirname}", //已执行程序或脚本的当前工作目录。如果省略,则使用代码的当前工作区根。"env": {}, //已执行程序或 shell 的环境。如果省略,则使用父进程的环境。// "shell": {} // 配置使用的 shell。},"problemMatcher": [//要使用的问题匹配程序。可以是一个字符串或一个问题匹配程序定义,也可以是一个字符串数组和多个问题匹配程序。"$gcc"],"group": "build", //  将任务标记为可通过 "运行生成任务" 命令访问的生成任务。"detail": "弹窗内输出" // 任务的其他详细信息。},{ // 设置与上面的性质相同,都是构建任务"type": "shell","label": "myrun","command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //改成自己的路径"args": [ //其他参数见上一个"-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"presentation": { //配置用于显示任务输出并读取其输入的面板。"echo": true, //控制是否将执行的命令显示到面板中。"reveal": "always", //控制运行任务的终端是否显示。可按选项 "revealProblems" 进行替代。"focus": false, //控制面板是否获取焦点。默认值为“false”。如果设置为“true”,面板也会显示。"panel": "new", // 控制是否在任务间共享面板。同一个任务使用相同面板还是每次运行时新创建一个面板。//new 每个进程创建新窗口"showReuseMessage": false, //控制是否显示“终端将被任务重用,按任意键关闭”提示。"clear": false //控制是否在执行任务之前清除终端。},"options": { // 其他命令选项"cwd": "${fileDirname}", //已执行程序或脚本的当前工作目录。如果省略,则使用代码的当前工作区根。"env": {}, //已执行程序或 shell 的环境。如果省略,则使用父进程的环境。// "shell": {} // 配置使用的 shell。},"problemMatcher": ["$gcc"],"group": "build","detail": "终端内输出"},{ //这个大括号里是‘运行(run)’任务,一些设置与上面的构建任务性质相同,此任务是组中的默认任务,vscode右上角三角形运行"type": "cppbuild", // 要自定义的任务类型"label": "run", //任务名称,点vscode 右上角运行的就是这个"command": "F:\\vscode\\MSY\\MSY2\\ucrt64\\bin\\g++.exe", //执行编译的编译器或脚本的路径。"args": [ //其他要传递给编译器或编译脚本的参数"-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe", //执行exe文件,只需要指定这个exe文件在哪里就好],"options": { // 其他命令选项"cwd": "${fileDirname}", //已执行程序或脚本的当前工作目录。如果省略,则使用代码的当前工作区根。"env": {}, //已执行程序或 shell 的环境。如果省略,则使用父进程的环境。// "shell": {}  // 配置使用的 shell。},"problemMatcher": ["$gcc"],"group": {"kind": "test", //这一组是‘测试’组,将run任务放在test组里方便我们用快捷键执行"isDefault": true // 定义此任务是组中的默认任务,还是与应触发此任务的文件匹配的 glob。},"detail": "调试器生成的任务。" // 任务的其他详细信息。}]
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/92989.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

激活函数总结(十):激活函数补充(Identity、LogSigmoid、Bent Identity)

激活函数总结(十):激活函数补充 1 引言2 激活函数2.1 Identity激活函数2.2 LogSigmoid激活函数2.3 Bent Identity激活函数 3. 总结 1 引言 在前面的文章中已经介绍了介绍了一系列激活函数 (Sigmoid、Tanh、ReLU、Leaky ReLU、PReLU、Swish、…

【Spring系列篇--关于IOC的详解】

目录 面试经典题目: 1. 什么是spring?你对Spring的理解?简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 2.什么是IoC?你对IoC的理解?IoC的重要性?将实例化对象的权利从程序员…

Rust软件外包开发语言的特点

Rust 是一种系统级编程语言,强调性能、安全性和并发性的编程语言,适用于广泛的应用领域,特别是那些需要高度可靠性和高性能的场景。下面和大家分享 Rust 语言的一些主要特点以及适用的场合,希望对大家有所帮助。北京木奇移动技术有…

Windows上使用FFmpeg实现本地视频推送模拟海康协议rtsp视频流

场景 Nginx搭建RTMP服务器FFmpeg实现海康威视摄像头预览: Nginx搭建RTMP服务器FFmpeg实现海康威视摄像头预览_nginx rtmp 海康摄像头_霸道流氓气质的博客-CSDN博客 上面记录的是使用FFmpeg拉取海康协议摄像头的rtsp流并推流到流媒体服务器。 如果在其它业务场景…

【Axure高保真原型】JS日期选择器筛选中继器表格

今天和大家分享JS日期选择器筛选中继器表格的原型模板,通过调用浏览器的日期选择器,所以可以获取真实的日历效果,具体包括哪一年二月份有29天,几号对应星期几,都是真实的,获取日期值后,通过交互…

Unity C# 之 Azure 微软SSML语音合成TTS流式获取音频数据以及表情嘴型 Animation 的简单整理

Unity C# 之 Azure 微软SSML语音合成TTS流式获取音频数据以及表情嘴型 Animation 的简单整理 目录 Unity C# 之 Azure 微软SSML语音合成TTS流式获取音频数据以及表情嘴型 Animation 的简单整理 一、简单介绍 二、实现原理 三、注意事项 四、实现步骤 五、关键代码 一、简…

JVS开源基础框架:平台基本信息介绍

JVS是面向软件开发团队可以快速实现应用的基础开发脚手架,主要定位于企业信息化通用底座,采用微服务分布式框架,提供丰富的基础功能,集成众多业务引擎,它灵活性强,界面化配置对开发者友好,底层容…

嵌入式:ARM Day4

一、自己编写代码实现三盏灯点亮 源码: .text .global _start _start: 进行一次初始化bl RCC_INITbl LED1_INITbl LED2_INITbl LED3_INITb looploop: 循环开关灯bl LED1_ONbl delay_1sbl LED1_OFFbl delay_1sbl LED2_ONbl delay_1sbl LED2_OFFbl delay_1sbl…

kafka线上问题优化

如何防止消息丢失 生产者: 使用同步发送把ack设成1或者all(非0,0可能会出现消息丢失的情况),并且设置同步的分区数>2 消费者:把自动提交改成手动提交 如何防止重复消费 在防止消息丢失的方案中&#…

每天一道leetcode:1926. 迷宫中离入口最近的出口(图论中等广度优先遍历)

今日份题目: 给你一个 m x n 的迷宫矩阵 maze (下标从 0 开始),矩阵中有空格子(用 . 表示)和墙(用 表示)。同时给你迷宫的入口 entrance ,用 entrance [entrancerow, …

配置vscode

配置vscode 设置相关 网址:https://code.visualstudio.com/ 搜索不要用百度用这个:cn.bing.com 1.安装中文包 Chinese (Simplified) (简体中文) 2.安装 open in browser 3.安装主题 Atom One Dark Theme 4. 安装图标样式 VSCode Great Icons 5.安装 L…

使用navicat连接postgresql报错问题解决

使用navicat连接postgresql报错问题解决 一、问题现象: 最近使用Navicat来连接postgreSQL数据库,发现连接不上,报错信息如下: 自己百度了一下,发现pgsql 15版本以后,有些系统表的列名改了,pg_…

HTTPS 的加密流程

目录 一、HTTPS是什么? 二、为什么要加密 三、"加密" 是什么 四、HTTPS 的工作过程 1.对称加密 2.非对称加密 3.中间人攻击 4.证书 总结 一、HTTPS是什么? HTTPS (Hyper Text Transfer Protocol Secure) 是基于 HTTP 协议之上的安全协议&…

关于Android Studio Http Proxy设置

对敌人最大的蔑视就是沉默。--鹿丸 我们使用Android Studio 开始构建的时候会有卡顿的情况,甚至死机,也就是所谓的【android studio】构建卡住问题,如果依赖库类都是国内的,检查是否开启了代理 这个地方选择下面的自动代理 国内…

Visual Studio 2019 c++ 自定义注释 ----doxygen

可加入C 也可自定义。 <?xml version"1.0" encoding"utf-8"?> <CodeSnippets xmlns"http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet"><CodeSnippet Format"1.0.0"><Header><Title>注释…

打开vim的语法高亮

在一个Ubuntu中自带的vim版本是8.2.4919&#xff0c;默认就是开始了语法高亮的&#xff0c;打开一个Java文件效果如下&#xff1a; 它不仅仅对Java文件有语法高亮&#xff0c;对很多的文件都有&#xff0c;比如vim的配置文件也有语法高亮&#xff0c;有语法高亮时读起来会容易…

【左神算法刷题班】第17节:在有序二维数组中查找目标值、等于目标字符串的子序列个数

第17节 题目1&#xff1a;在有序二维数组中查找目标值 给定一个每一行有序、每一列也有序&#xff0c;整体可能无序的二维数组 再给定一个数num&#xff0c; 返回二维数组中有没有num这个数 例子 数组如下&#xff0c;找 6 是否存在。 1 3 5 7 2 4 6 13 3 9 14 …

[C++]笔记-函数的栈空间(避免栈空间溢出)

错误1 当数组的内存占用较大时,会引发异常 #include <iostream> using namespace std; int main() {char buff[2000000];cout << (int)buff[sizeof(buff) - 1] << endl; 错误 2 当调用次数较小的时候,栈内存还没有满,可以输出,该地址相减除以1024等于100,就…

CANoe自动化工程的搭建

基于XMLCAPL建立自动化工程 1、导入ini文件2、新建 Test Environment3、报告类型4、代码编写 1、导入ini文件 工程的配置的文件&#xff0c;配置DUT相关信息&#xff0c;具体视工程而编写内容。 2、新建 Test Environment 1、新建XML测试用例环境 2、导入XML测试用例文件 …

奥威BI财务数据分析方案:借BI之利,成就智能财务分析

随着智能技术的发展&#xff0c;各行各业都走上借助智能技术高效运作道路&#xff0c;财务数据分析也不例外。借助BI商业智能技术能够让财务数据分析更高效、便捷、直观立体&#xff0c;也更有助于发挥财务数据分析作为企业经营管理健康晴雨表的作用。随着BI财务数据分析经验的…