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

VSCode C/C++ 开发环境完整配置及一些扩展用途(自用)update:2025/3/31

这里主要记录了一些与配置相关的内容。由于网上教程众多,部分解决方法并不能完全契合我遇到的问题,因此我选择以自己偏好的方式,对 VSCode 进行完整的配置,并记录在使用过程中遇到的问题及解决方案。后续内容也会持续更新和完善。

update 2023/4/23 心血来潮想写一下基本配置教程
update 2024/1/17 更新刷题相关插件使用
update 2025/1/6 添加主题扩展
update 2025/2/3 添加reStructuredText文本文档教程
update 2025/3/31 添加Vscode与服务器连接以及代码同步

本文档参考:

最新最全 VSCODE 插件推荐(2025版)

让你工作效率翻倍的 20 个 VSCode 插件!


文章目录

  • 1. 基本配置
    • 1.1 安装 MinGW
    • 1.2 安装 VSCode 扩展
  • 2. 设置 exe 文件路径
    • 2.1 使用 CodeRunner 自动清理 exe 文件
    • 2.2 使用 tasks.json 和 launch.json 配置输出目录
  • 3. 配置相关的常见问题
  • 4. 代码格式化
    • 4.1 自动格式化
    • 4.2 设置格式化风格
    • 4.3 括号颜色
  • 5 刷题相关扩展
    • 5.1 cph样例测试
    • 5.2 EL错误显示
    • 5.3 wakatime代码时间记录
  • 6 主题图标扩展
    • 6.1 文件图标
    • 6.2 官方图标
  • 7 文档语言相关
    • 7.1 Markdown预览与编辑
    • 7.2 reStructuredText编写
  • 8 Vscode与服务器(教程以算力云为例)
    • 8.1 连接服务器
    • 8.2 本地与服务器同步代码
    • 8.3 连接服务器的问题


1. 基本配置

1.1 安装 MinGW

MinGW 是一个用于 Windows 平台的 GCC 编译器套件,支持 C/C++ 编译。以下是安装步骤:

  1. 访问 MinGW 官网 下载最新版本。
  2. 解压下载文件后,将 bin 文件夹路径添加到系统的环境变量中。例如:
    在这里插入图片描述
  3. 验证安装是否成功:打开命令行,输入 g++ --version,若显示版本信息,则安装成功。

1.2 安装 VSCode 扩展

在 VSCode 中安装以下扩展:

  • C/C++:由 Microsoft 提供,支持代码高亮、调试等功能。
  • Code Runner:用于快速运行代码。

2. 设置 exe 文件路径

默认情况下,编译生成的 .exe 文件会与源代码位于同一目录下,这可能会导致文件杂乱。我们可以通过配置将其归并到指定目录中。

2.1 使用 CodeRunner 自动清理 exe 文件

CodeRunner 是一个便捷的代码运行工具,可以通过修改其配置实现自动清理功能:

  1. 打开 CodeRunner 扩展设置,点击齿轮图标,选择“扩展设置”。
  2. 找到 Code-runner: Executor Map,点击“在 settings.json 中编辑”,并在 C 和 C++ 的命令后添加以下内容:
    && rm $dir$fileNameWithoutExt.exe
    
    修改后的配置示例:
    在这里插入图片描述
  3. 在 CodeRunner 设置中勾选以下选项:
    • Run in Terminal:确保代码在终端中运行。
    • Save File Before Run:运行前自动保存文件。

2.2 使用 tasks.json 和 launch.json 配置输出目录

配置 tasks.json
tasks.json 用于定义编译任务,我们将生成的 .exe 文件输出到 output 文件夹中。我的配置如下:

{"tasks": [{"type": "cppbuild","label": "C/C++: g++.exe build active file","command": "C:\\Program Files\\mingw64\\bin\\g++.exe","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\output\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "Task generated by Debugger."}],"version": "2.0.0"
}

配置 launch.json
launch.json 用于调试配置,需与 tasks.json 协同工作。以下是我的配置:

{"configurations": [{"name": "C/C++: g++.exe build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}\\output\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${fileDirname}\\output","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "C:\\Program Files\\mingw64\\bin\\gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "Set Disassembly Flavor to Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe build active file"}],"version": "2.0.0"
}

效果如下:

在这里插入图片描述


3. 配置相关的常见问题

Q:编译失败,提示找不到编译器
why:未正确配置 MinGW 的环境变量。
Answer:检查系统环境变量中是否包含 MinGW 的 bin 路径。

Q:调试时无法找到 .exe 文件
whytasks.jsonlaunch.json 中的路径不一致。
Answer:确保两者中的 output 目录路径一致。

Q:运行结果无输出
why:可能未启用终端运行或代码逻辑问题。
Answer:检查 CodeRunner 设置中的“Run in Terminal”选项是否已勾选。


4. 代码格式化

4.1 自动格式化

使用alt-shift-p格式化太麻烦了,设置保存时自动格式化。
勾选即可。
在这里插入图片描述
setting.json中加上这两行:

"editor.formatOnType": true,
"editor.formatOnSave": true

在这里插入图片描述

4.2 设置格式化风格

我们知道代码的风格最典型的有两种,花括号的行位和独占一行的风格。vscode默认用的是Visual Studio风格,独占一行的风格,如下:

for()
{
//code
}

但是我个人比较喜欢行尾风格

for(){
}

vscode可以自定义自己的代码格式化风格。
首先Ctrl Shift P,输入user settings,搜索clang,如下图所示。这里面可以选择自己喜欢的风格,具体的代码风格自行查阅即可:https://clang.llvm.org/docs/ClangFormatStyleOptions.html
在这里插入图片描述

4.3 括号颜色

在这里插入图片描述

这个扩展已经弃用了,现在已经内置于vscode中。在 setting.json 中加入以下代码:

{"editor.bracketPairColorization.enabled": true,"editor.guides.bracketPairs":"active"
}

或者直接在setting里面搜 editor.bracketPairColorization

在这里插入图片描述


5 刷题相关扩展

5.1 cph样例测试

在这里插入图片描述
可以进行样例测试,用法如下:
在这里插入图片描述

5.2 EL错误显示

在这里插入图片描述
在这里插入图片描述

5.3 wakatime代码时间记录

在这里插入图片描述

https://wakatime.com/api-key
获取key,然后安装扩展之后输入,重启即可。


6 主题图标扩展

6.1 文件图标

在这里插入图片描述
在这里插入图片描述

6.2 官方图标

在这里插入图片描述
个人觉得蛮好看的。

在这里插入图片描述

7 文档语言相关

7.1 Markdown预览与编辑

Markdown Preview Enhanced

在这里插入图片描述

在这里插入图片描述

方便markdown进行编辑

在这里插入图片描述

在这里插入图片描述

7.2 reStructuredText编写

参考教程:https://www.osgeo.cn/sphinx-note/sphinx-rest.html


8 Vscode与服务器(教程以算力云为例)

8.1 连接服务器

1. 下载插件

搜索remote,然后下面三个都要下载

在这里插入图片描述

ctrl + shift +p,然后打开 SSH:Settings

在这里插入图片描述

在setting.json中编辑

在这里插入图片描述

加入这行代码:

"remote.SSH.useLocalServer": true

在这里插入图片描述


2. 进入远程管理器

在这里插入图片描述

3. 选择第一个..ssh\config

在这里插入图片描述

根据自己的服务器信息进行配置,我的如下:

ssh -p 57293 root@connect.xxx.com

在这里插入图片描述


之后,SSH TARGETS中会出现服务器,右键连接 (建议新窗口连接,之后会有两个窗口,一个是服务器窗口,一个是本地窗口)

在这里插入图片描述

连接过程中要输入密码

在这里插入图片描述

连接成功之后会显示如下,在服务器窗口中可以看到,已连接。

在这里插入图片描述

然后在服务器窗口中,打开服务器中的文件夹作为工作目录即可,我这里是 TestSS,右边的那一串 [SSH:CONNECT...] 就是你的远程服务器了

在这里插入图片描述
至此,服务器连接已经OK了。

8.2 本地与服务器同步代码

  1. 在服务器窗口中,扩展里面搜 sftp,如下图

在这里插入图片描述

  1. 快捷键ctrl+shift+P,搜 SFTP.config

在这里插入图片描述

{"name": "My Server","host": "connect.yza1.seetacloud.com","protocol": "sftp","port": 57293,"username": "root","password": "sAxKMhezg1Ku","remotePath": "/","uploadOnSave": true,"useTempFile": false,"openSsh": false
}

host:改为你的远程服务器地址 connect.yza1.seetacloud.com。
port:改为你的远程服务器 SSH 端口 57293。
username:改为你的用户名 root。
password:请替换为你的实际密码(注意安全,不要泄露)。
remotePath:默认为 /,你可以根据需要修改为其他路径,比如 /mnt/data/yjy/quant_decryt。
uploadOnSave:默认为 false,表示保存文件时不会自动上传。如果你希望保存文件时自动上传,可以改为 true。

最后一步就是上传文件了,这里直接从本地窗口拖拽过去就行了。

在这里插入图片描述
在这里插入图片描述

不放心的话去服务器上看一眼,如下图,OK了。

在这里插入图片描述

8.3 连接服务器的问题

Remot-SSH:setting 中,有一个很神奇的地方,我需要设置为true

"remote.SSH.useLocalServer": true

但是在同学电脑上设置为false才能用,remote.SSH.useLocalServer 是 VS Code 的一个设置,用于控制是否使用本地服务器来加速远程连接。这个设置的值取决于你的系统配置和网络环境。所以可能是网络问题,将 remote.SSH.useLocalServer 设置为 false 可能更有用。(大家如果遇到的话,建议true和false都试一试,可能会有效)

还有一个解决办法就是:把 Remote - SSH 扩展降级到 0.49.0 。

参考链接:https://github.com/microsoft/vscode-remote-release/issues/2525

相关文章:

VSCode C/C++ 开发环境完整配置及一些扩展用途(自用)update:2025/3/31

这里主要记录了一些与配置相关的内容。由于网上教程众多,部分解决方法并不能完全契合我遇到的问题,因此我选择以自己偏好的方式,对 VSCode 进行完整的配置,并记录在使用过程中遇到的问题及解决方案。后续内容也会持续更新和完善。…...

iOS 上线前的性能与稳定性检查流程实录:开发者的“最后一公里”(含 KeyMob 应用经验)

一个 iOS 项目写完功能、跑完测试,离上线只差一步了——但很多问题恰恰就在“这最后一公里”暴露:某些设备发热严重,部分流程偶发卡顿,某些崩溃只有长时间运行后才出现。 今天我分享的是我在多个 iOS 项目上线前实际执行过的性能…...

Docker系列(二):开机自启动与基础配置、镜像加速器优化与疑难排查指南

引言 docker 的快速部署与高效运行依赖于两大核心环节:基础环境搭建与镜像生态优化。本期博文从零开始,系统讲解 docker 服务的管理配置与镜像加速实践。第一部分聚焦 docker 服务的安装、权限控制与自启动设置,确保环境稳定可用&#xff1b…...

a16z:AI带来了全新的9种开发软件的模式

非常有启发的9条新兴模式,推荐给已经上手 vibeCoding 的读者们。 开发者正在将 AI 从简单的工具转变为构建软件的新基础。许多核心概念,如版本控制、模板、文档,甚至用户的定义,都在被重新思考。代理(Agent&#xff09…...

20.迭代器模式:思考与解读

原文地址:迭代器模式:思考与解读 更多内容请关注:深入思考与解读设计模式 引言 在软件开发中,尤其是在处理集合数据时,你是否曾经遇到过这样的问题:你需要遍历一个集合(如数组、列表、集合等&#xff09…...

Java 学习笔记:注解、泛型与 IO 流

目录 课程目标 Java 注解(Annotation) 1. 概念与作用 2. 自定义注解示例 3. JDK 内置注解 4.注释 Java 泛型(Generics) 1. 基本语法 2. 通配符与上下限 3. 常见应用场景 Java IO 流 1. 流的分类1.File文件类 2. 字节流与字符流 3. 经典示例:文件拷贝 总结与…...

在 Excel 使用macro————仙盟创梦IDE

Dim filePath As StringDim fileContent As StringDim lines() As StringDim dataArray() As StringDim lineCount As LongDim maxCols As LongDim i As Long, j As Long 文件路径filePath "" 检查文件是否存在If Dir(filePath) "" ThenMsgBox "文件…...

【MySQL】08.视图

视图就是一个由查询到的内容定义的虚拟表。它和真实的表一样,视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表,基表的数据变化也会影响到视图。 1. 基本使用 mysql> select * from user; -------------------- | id | age | name …...

鸿蒙devEco studio如何创建模拟器

官网原文链接:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides/ide-emulator-create 操作步骤 点击菜单栏的Tools > Device Manager,点击右下角的Edit设置模拟器实例的存储路径Local Emulator Location,Mac默认存储在~/…...

鸿蒙路由参数传递

页面test.ets 代码如下: import router from ohos.router Entry Component struct Test {State message: string Hello WorldState username: string huState password: string 1build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWe…...

springboot 控制层调用业务逻辑层,注入报错,无法自动装配 解决办法

报错: 解决:愿意是业务逻辑层,即service层的具体实现类没有加注解Service导致的,加上解决了!!...

MySQL:11_事务

事务 一.CURD不加控制,会有什么问题? 二.什么是事务? 事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制&#xf…...

Linux中的文件系统和软硬连接

磁盘的访问方式 CHS(柱面,磁头,扇区) 法(磁盘硬件查找): 确定柱面(C) 磁头臂移动到对应的柱面位置。例如,柱面号为 5,则磁头移动到第 5 个磁道组…...

并发容器(Collections)

一、并发安全问题根源 1. List(如ArrayList) 问题表现:多线程同时调用add、remove等方法时,可能抛出ConcurrentModificationException或导致数据不一致。根本原因: 非原子性操作:如add操作的流程&#xf…...

SPA模式下的es6如何加快宿主页的显示速度

SPA的模式下,宿主页是首先加载的页面,会需要一些主要的组件,如element-plus,easyui,devextreme,ant-design等,这些组件及其依赖组件,文件多,代码量大,可能导致…...

windows powershell 判断 进程号是否存在

在 Windows PowerShell 中,你可以使用多种方法来检查一个特定的进程号(PID)是否存在。以下是几种常用的方法: 方法1:使用 Get-Process 命令 你可以尝试获取具有特定 PID 的进程。如果该进程存在,Get-Proce…...

c# 解码 encodeURIComponent

在C#中,如果你需要解码由encodeURIComponent方法编码的URL,你可以使用System.Web命名空间中的HttpUtility.UrlDecode方法。这个方法可以处理由JavaScript的encodeURIComponent方法编码的字符串。 首先,确保你的项目中引用了System.Web命名空…...

Spring AI:Java开发者的AI开发新利器

目录 一、引言 二、Spring AI 是什么 三、核心功能与特性 3.1 统一的 API 抽象 3.2 丰富的模型支持 3.3 低代码集成 3.4 结构化数据输出 3.5 流式数据响应 四、应用场景 4.1 智能客服系统 4.2 图像识别应用 4.3 数据分析与预测 五、快速上手 5.1 环境搭建 5.2 创…...

Android System UI 深度解析:从架构演进到车载 / TV 场景的全维度定制

Android System UI 是 Android 操作系统的核心组件,负责管理设备的系统级用户界面和交互逻辑。它通过状态栏、导航栏、通知面板、快速设置等功能,为用户提供与系统功能直接交互的入口,并与硬件、应用程序深度协同,构建完整的用户体验。以下是其核心架构、功能演进及定制化能…...

Spring Cloud Sleuth与Zipkin深度整合指南:微服务链路追踪实战

上篇文章简单介绍了SpringCloud系列熔断器:Sentinel的搭建及基本用法,今天继续讲解下SpringCloud的微服务链路追踪:Zipkin的使用!在分享之前继续回顾下本次SpringCloud的专题要讲的内容: 前置知识说明 在开始本教程前…...

React从基础入门到高级实战:React 基础入门 - 列表渲染与条件渲染

列表渲染与条件渲染 在 React 开发中,列表渲染 和 条件渲染 是处理动态数据和用户交互的基础技术。通过列表渲染,你可以根据数据动态生成 UI 元素;而条件渲染则让你根据特定条件展示不同的内容。这两个技能在实际项目中非常常见,…...

在 stm32 中 volatile unsigned signed 分别有什么作用,分别在什么场景下使用?

在STM32开发中, plaintext 复制 volatile 、 plaintext 复制 unsigned 和 plaintext 复制 signed 是三个关键的关键字,它们的用途和场景如下: 1. plaintext 复制 volatile 关键字 作用: 禁止编译器优化&#xff…...

FreeBSD14.2因为爆内存而导致Xfce4视窗被卡,桌面变黑色,只能看到鼠标在窗体中心,鼠标无反应,键盘无反应

拿问题问AI pytest的时候因为内存不足导致xfce4卡住(xfce4相关进程被关闭),桌面变黑色,只能看到鼠标在窗体中心,鼠标无反应,键盘无反应,请问应该怎么办? pytest的时候因为内存不足导…...

k8s-NetworkPolicy

在 Kubernetes 中,NetworkPolicy 是一种资源对象,用于定义 Pod 之间的网络通信策略。它允许你控制哪些 Pod 可以相互通信,以及如何通信。通过使用 NetworkPolicy,可以实现更细粒度的网络访问控制,增强集群的安全性。 1…...

spring-ai 集成 mcp 之投机取巧

主旨 这篇文章主旨就一点,罗列spring-ai对mcp集成导致出现的一系列问题 分析 由于mcp未问世之前,就早就已经有了工具调用,源码如下: public interface ToolCallback {/*** Definition used by the AI model to determine when a…...

大语言模型的完整训练周期从0到1的体系化拆解

以下部分内容参考了AI。 要真正理解大语言模型(LLM)的创生过程,我们需要将其拆解为一个完整的生命周期,每个阶段的关键技术相互关联,共同支撑最终模型的涌现能力。以下是体系化的训练流程框架: 阶段一&am…...

历年北京邮电大学保研上机真题

2025北京邮电大学保研上机真题 2024北京邮电大学保研上机真题 2023北京邮电大学保研上机真题 在线测评链接:https://pgcode.cn/problem?classification1 32位二进制串加法 题目描述 输入一个32位的二进制01串,输出这个数1和3后的32位二进制串。 输入…...

elementUI 中el-date-picker和el-select的样式调整

1. el-date-picker <el-date-picker class"select1" size"small" v-model"timeRangeArr" type"daterange" align"right" unlink-panels range-separator"至" start-placeholder"开始日期" end-pla…...

《仿盒马》app开发技术分享-- 定位获取(端云一体)

开发准备 上一节我们实现了地址管理页面的数据查询和展示&#xff0c;接下来我们要实现的功能是地址添加相关的&#xff0c;我们想实现的功能是地图选点&#xff0c;那么在地图选点之前我们要做的就是先获取用户当前的定位。获取定位后我们拿到经纬度和其他信息&#xff0c;然…...

黑马点评--基于Redis实现共享session登录

集群的session共享问题分析 session共享问题&#xff1a;多台Tomcat无法共享session存储空间&#xff0c;当请求切换到不同Tomcat服务时&#xff0c;原来存储在一台Tomcat服务中的数据&#xff0c;在其他Tomcat中是看不到的&#xff0c;这就导致了导致数据丢失的问题。 虽然系…...