VS Code 调教日记(2022.6.26更新)
VS Code 调教日记(2022.6.26更新)
基于msys2的MinGW-w64 GCC的环境配置
- 下载并安装msys2
- 到路径...msys2安装路径...\msys64\etc\pacman.d下找到三个mirrorlist文件将国内两个大学镜像源提至最前
- 执行pacman -Syu更新pacman的基本软件仓库
- 执行pacman -Su更新的剩余程序
- 执行pacman -S --needed base-devel mingw-w64-x86_64-toolchain安装Mingw-w64 GCC编译工具链
- 系统->高级系统设置->环境变量->找到上面框里的PATH编辑->添加......msys2安装路径......\msys64\mingw64\bin(如果有别的mingw的路径请删除)
- 打开cmd,输入g++ --version,如果出现版本号则说明环境搭建完毕
关于.vscode的c++编程环境配置
- 下载并安装vscode
- 下载并配置c/cpp插件
- 写个代码按F5,进入配置编译器tasks.json和launch.json
- 再按F5开始调试
- 开始玩别的插件qwq
c_cpp_properties.json
c_cpp插件配置(一般通过Ctrl+Shift+P,搜索插件名字进入图形化配置界面)
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}\\**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.19041.0",
"compilerPath": "E:/MYPROGRAM/ENV/MSYS2/msys64/mingw64/bin/g++.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "${default}"
}
],
"version": 4
}
launch.json
前者编译+运行,后者编译+调试
F5启动(启动最近启动的模式),也可以到Run界面手动开启
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) 启动",
"type": "cppvsdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}",
"args": [
"/C",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"&",
"pause"
],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"preLaunchTask": "C/C++: g++.exe 生成活动文件",
"console": "externalTerminal"
},
{
"name": "(gdb) 启动", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${fileDirname}\\${fileBasenameNoExtension}", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${fileDirname}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
"environment": [],
"MIMode": "gdb",
"miDebuggerPath": "E:\\MYPROGRAM\\ENV\\MSYS2\\msys64\\mingw64\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"preLaunchTask": "C/C++: g++.exe 生成活动文件", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
tasks.json
编译配置
Ctrl+Shift+B编译
{
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: g++.exe 生成活动文件",
"command": "g++",
"args": [
"-fdiagnostics-color=always",
//"-fexec-charset=GBK",
//"-finput-charset=UTF-8",
//"-finput-charset=GB2312",
"-std=c++17",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc"
],
"presentation": {
"echo": true,
"reveal": "silent",
"panel": "shared",
"showReuseMessage": false,
"clear": false
},
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
},
],
"version": "2.0.0"
}
setting.json
files.associations 用于文件关联的高亮格式化。
其他所有工作区配置都会出现在这里,有可能某些插件不工作就是这个文件里面多了些不该有的配置。
关于C_CPP插件自带的代码格式化用法
首先要把设置->文本编辑器中的Format On Save打开
再将C/CPP插件中的Formatting调成vcFormat
最后在C/CPP插件里面关于格式化的配置自定义即可
关于代码模板的用法
在设置->用户代码片段->选择Cpp文件->进行如下类似自定义
prefix用于输入前缀匹配,之后只要在文本中输入这个就可以将文本替换
$符号用于聚焦光标
{
"ACM-MODLE": {
"prefix": "acm",
"body": [
"#include <bits/stdc++.h>",
"$1",
"using namespace std;",
"$2",
"int main() {",
"\tstd::ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);",
"\t$3",
"\t",
"\treturn 0;",
"}"
],
"description": "Init an acm model."
}
}
关于vscode乱码
注意编程环境默认是utf-8编码,而中国计算机使用的是gbk编码,这样会导致在环境里的中文到计算机终端会乱码,而计算机自身保存的中文到环境也会乱码。
网上有说,在task配置里面加入-finput-charset用来指定输入文件的的字符编码,-fexec-charset指定了字符串所使用的格式文件编译。这样确实可以解决,但会产生弊端:在future.h中,因为这样的编码会导致编译失败;在平时字符串中打中文会编译失败。这些都是指定编码编译文件产生的问题。
但实际上我们希望的是终端能输出中文不会乱码,即字符串里的中文能被显示,这只要保证保存时的编码和终端使用的编码相同,即GBK编码。因此,我们只需要把打开和保存文件的编码改成GBK即可,不需要更改编译时候使用的代码徒增麻烦。
具体来说,我们使用GBK编码写了一个代码,再用默认的utf-8编码编译是没有任何问题的,因为字母和数字的编码GBK和utf-8是一样的,而字符串虽然utf-8显示不出,但编译过程我们又不管,只要字符串原封不动还给我就行了,最后的可执行文件字符串还是GBK编码下的二进制,于是我们就能看到了。
具体流程:
- 左下角齿轮
- 设置
- 用户下在上面搜索框搜索encoding
- 找到File: Encoding
- 选择GBK即可
关于vscode的插件
打红框的是我目前C++编程用到的。
一些问题:
Error lens
C_CPP:Error Squiggles 必须是Enable状态,否则无法实时报错。
长一点代码有可能报不了qwq

VS Code 调教日记(2022.6.26更新)的更多相关文章
- SPFA算法(SLF优化)2022.7.8更新
SPFA可能会被卡掉,能用dijkstra就别用SPFA,代码较长,但我已尽力做到解释,请耐心看下去,存储为邻接表存储. #include<bits/stdc++.h> #define i ...
- [Phonegap+Sencha Touch] 移动开发77 Cordova Hot Code Push插件实现自己主动更新App的Web内容
原文地址:http://blog.csdn.net/lovelyelfpop/article/details/50848524 插件地址:https://github.com/nordnet/cord ...
- Entity Framework 6 Code First的简单使用和更新数据库结构
一.安装Entity Framework 6 在项目中右击选择“管理NuGet程序包",联机搜索Entity Framework,点击安装 二.配置数据库连接 在App.config中加入数 ...
- UVA 12436-Rip Van Winkle's Code(线段树的区间更新)
题意: long long data[250001]; void A( int st, int nd ) { for( int i = st; i \le nd; i++ ) data[i] = da ...
- EF Code first主从表,删除更新从表
以order和orderItem为例,从表orderItem里有主表的orderId 想通过order.orderitems.add()或者remove()方法直接更新从表的话,必须在从表建立联合主键 ...
- TW实习日记:第26天
这周组长休年假去了,并且之前主要负责的项目也已经上线了,可以说没那么忙了,手头就一个协助别的组做的移动端项目.可是这个项目特别坑,由于网端是9年前的项目,导致后台的接口有非常多的问题,并且入参多得令人 ...
- 梦想3D控件 2018.7.26更新
下载地址: http://www.mxdraw.com/ndetail_108.html 1. 编写所有接口函数使用的CHM文档 2. 增加交互绘制功能 3. 增加案例弧形窗建模案例 4. 增 ...
- 梦想CAD控件 2018.7.26更新
下载地址: http://www.mxdraw.com/ndetail_107.html 1. 增加属性匹配功能 2. 增加List命令 3. 增加CAD图纸审图批注功能 4. 环形阵列功能 ...
- 梦想Android版CAD控件2018.7.26更新
下载地址: http://www.mxdraw.com/ndetail_109.html 1. 增加所有接口CHM帮助文档 2. 增加得到当前打开文件函数 3. 读写CAD扩展记录接口 4. 读写属性 ...
随机推荐
- 进阶实战 css 点击按钮的样式
1. html结构 <div class="menu-wrap"> <input type="checkbox" class="t ...
- Go 语言字符串常见操作
@ 目录 1. 字节数组 2. 头尾处理 3. 位置索引 4. 替换 5. 统计次数 6. 重复 7. 大小写 8. 去除字符 9. 字符串切片处理 10. 数值处理 1. 字节数组 字节与字符的区别 ...
- 为什么Redis要比Memcached更火?
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 前言 我们都知道,Redis和Memcached都是内存数据库,它们的访问速度非常之快.但我们 ...
- 图解 Git 工作原理
此页图解 git 中的最常用命令.如果你稍微理解git的工作原理,这篇文章能够让你理解的更透彻. 基本用法 上面的四条命令在工作目录.暂存目录(也叫做索引)和仓库之间复制文件. git add fil ...
- Masa Blazor自定义组件封装
前言 实际项目中总能遇到一个"组件"不是基础组件但是又会频繁复用的情况,在开发MASA Auth时也封装了几个组件.既有简单定义CSS样式和界面封装的组件(GroupBox),也有 ...
- SQL注入的几种类型
SQL注入就是: 将构造SQL语句来插入到web提交的数据之中,让其返回数据时运行自己构造的恶意SQL语句. SQL注入构造恶意SQL语句的方法有: 构造堆叠,构造闭合,构造报错,构造时间差,等等 S ...
- Erdos-Renyi随机图的生成方式及其特性
1 随机图生成简介 1.1 \(G_{np}\)和\(G_{nm}\) 以下是我学习<CS224W:Machine Learning With Graphs>[1]中随机图生成部分的笔记, ...
- Java学习笔记-基础语法Ⅱ
成员变量:类中方法外的变量 局部变量:方法中的变量 注意,成员变量有默认初始值,而局部变量需要赋初始值 Java中虽然没有明确规定类必须首字母大写,但为了规范最好大写(因为自己刚刚写的时候就没看清写错 ...
- 由C# dynamic是否装箱引发的思考
前言 前几天在技术群里看到有同学在讨论关于dynamic是否会存在装箱拆箱的问题,我当时第一想法是"会".至于为啥会有很多人有这种疑问,主要是因为觉得dynamic可能是因为有点特 ...
- OpenHarmony3.1 Release版本关键特性解析——Enhanced SWAP内存管理
樊成阳 华为技术有限公司内核专家 陈杰 华为技术有限公司内核专家 OpenAtom OpenHarmony(以下简称"OpenHarmony")是面向全场景泛终端设备的操作系统,终 ...