使用Visual Studio Code配置C/C++开发环境的全面指南
目录
引言
一、准备工作
1. 安装Visual Studio Code
2. 安装C/C++编译器
3. 配置环境变量(仅Windows用户)
二、在VS Code中安装C/C++扩展
三、创建您的第一个C/C++项目
1. 创建项目文件夹
2. 打开项目文件夹
3. 创建源文件
四、配置任务(Tasks)以编译代码
1. 创建tasks.json文件
2. 编辑tasks.json
3. 编译代码
五、配置调试环境
1. 创建launch.json文件
2. 编辑launch.json
3. 开始调试
六、配置IntelliSense(代码智能提示)
1. 创建c_cpp_properties.json
2. 配置编译器路径和包含路径
3. 验证IntelliSense功能
七、完整的配置文件示例
1. tasks.json
八、常见问题及解决方案
1. 编译时找不到g++命令
2. 调试时无法启动gdb
3. IntelliSense不起作用
4. 无法设置断点或断点无效
九、总结
结语
引言
Visual Studio Code(简称VS Code)是一款由微软开发的免费、开源、跨平台的代码编辑器。凭借其轻量级、高度可定制和丰富的扩展功能,VS Code已成为许多开发者的首选工具。本指南将详细介绍如何在VS Code中配置C/C++开发环境,包括编译、调试和代码补全等功能,希望能帮助您快速上手。
一、准备工作
1. 安装Visual Studio Code
首先,您需要从Visual Studio Code官方网站下载并安装适用于您操作系统的版本。VS Code支持Windows、macOS和Linux平台。
2. 安装C/C++编译器
- Windows用户:建议安装MinGW-w64,这是一个Windows平台的GCC编译器集合。或者,您也可以安装Microsoft Visual C++ Build Tools。
- macOS用户:可以通过命令
xcode-select --install安装Xcode命令行工具,其中包含了Clang编译器。 - Linux用户:一般情况下,系统已经预装了GCC编译器。如果没有,可以通过包管理器安装,例如在Ubuntu上运行
sudo apt-get install build-essential。
3. 配置环境变量(仅Windows用户)
确保将编译器的bin目录添加到系统的环境变量PATH中,以便在命令行中直接调用gcc或g++命令。
二、在VS Code中安装C/C++扩展
打开VS Code,点击左侧活动栏中的扩展(Extensions)图标,在搜索栏中输入C/C++,找到由Microsoft提供的官方扩展并安装。
三、创建您的第一个C/C++项目
1. 创建项目文件夹
在您的计算机上创建一个新的文件夹,用于存放您的C/C++项目文件。例如,D:\Projects\HelloWorld。
2. 打开项目文件夹
在VS Code中,点击文件 -> 打开文件夹,选择您刚刚创建的项目文件夹。
3. 创建源文件
在项目文件夹中创建一个新的源文件:
- 对于C语言,创建
main.c。 - 对于C++语言,创建
main.cpp。
在文件中输入以下示例代码:
#include <iostream>int main() {std::cout << "Hello, World!" << std::endl;return 0;
}
四、配置任务(Tasks)以编译代码
为了在VS Code中编译代码,我们需要配置任务。
1. 创建tasks.json文件
按下Ctrl+Shift+B(macOS上为Cmd+Shift+B),如果没有配置任务,VS Code会提示您创建一个。选择Create tasks.json file from template,然后选择Others。
2. 编辑tasks.json
将tasks.json内容修改为以下内容:
{"version": "2.0.0","tasks": [{"label": "编译C++程序","type": "shell","command": "g++","args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"]}]
}
说明:
command:指定使用g++命令进行编译。args:传递给g++的参数。-g:生成调试信息。${file}:当前打开的文件。-o:指定输出文件。${fileDirname}/${fileBasenameNoExtension}.exe:生成的可执行文件名。
group:将此任务设置为默认的构建任务。problemMatcher:用于在编译错误时解析错误信息。
3. 编译代码
按下Ctrl+Shift+B,VS Code将执行您刚刚配置的编译任务。如果一切正常,您将在项目文件夹中看到生成的可执行文件。
五、配置调试环境
为了在VS Code中调试程序,我们需要配置launch.json文件。
1. 创建launch.json文件
点击调试图标(左侧活动栏中的虫子图标),然后点击创建launch.json文件,选择C++ (GDB/LLDB)。
2. 编辑launch.json
将launch.json内容修改为以下内容:
{"version": "0.2.0","configurations": [{"name": "调试C++程序","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "gdb","setupCommands": [{"description": "启用调试打印","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}
说明:
program:指定要调试的程序路径。miDebuggerPath:gdb的路径。如果未添加到PATH环境变量,需要填写完整路径。MIMode:使用gdb作为调试器。
3. 开始调试
在源代码中设置断点(点击行号左侧的空白区域),然后按下F5启动调试。
六、配置IntelliSense(代码智能提示)
VS Code的C/C++扩展提供了IntelliSense功能,但需要正确配置。
1. 创建c_cpp_properties.json
点击Ctrl+Shift+P(macOS上为Cmd+Shift+P),输入C/C++: Edit Configurations (JSON),创 建或打开c_cpp_properties.json文件。
2. 配置编译器路径和包含路径
将c_cpp_properties.json修改为:
{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**","C:/MinGW/include"],"defines": [],"compilerPath": "C:/MinGW/bin/g++.exe","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "windows-gcc-x64"}],"version": 4
}
说明:
includePath:指定头文件的搜索路径。compilerPath:指定编译器的路径。cStandard和cppStandard:指定C和C++的标准版本。intelliSenseMode:指定IntelliSense的模式。
3. 验证IntelliSense功能
保存配置文件后,返回源代码编辑器,尝试输入代码,应该会有代码补全和语法提示。
七、完整的配置文件示例
1. tasks.json
{"version": "2.0.0","tasks": [{"label": "编译C++程序","type": "shell","command": "g++","args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe"],"group": "build","problemMatcher": ["$gcc"]}]
}
2. launch.json
{"version": "0.2.0","configurations": [{"name": "调试C++程序","type": "cppdbg","request": "launch","program": "${fileDirname}/${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "gdb","setupCommands": [{"description": "启用调试打印","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}
3. c_cpp_properties.json
{"configurations": [{"name": "Win32","includePath": ["${workspaceFolder}/**","C:/MinGW/include"],"defines": [],"compilerPath": "C:/MinGW/bin/g++.exe","cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "windows-gcc-x64"}],"version": 4
}
八、常见问题及解决方案
1. 编译时找不到g++命令
解决方案:确保已将编译器的bin目录添加到系统环境变量PATH中。重启VS Code和终端以使更改生效。
2. 调试时无法启动gdb
解决方案:确保gdb已安装并添加到PATH中。如果使用MinGW-w64,可以在安装时选择包含gdb。
3. IntelliSense不起作用
解决方案:检查c_cpp_properties.json中的includePath和compilerPath是否正确,尤其是路径中的斜杠方向和大小写。
4. 无法设置断点或断点无效
解决方案:确保在编译时使用了-g选项生成调试信息。检查launch.json中的配置是否正确。
九、总结
通过以上步骤,您已经在VS Code中成功配置了C/C++的开发环境,包括编译、调试和IntelliSense功能。以下是本次内容的关键要点总结:
| 步骤 | 要点 |
|---|---|
| 安装必要工具 | VS Code、C/C++编译器、相关扩展 |
| 配置环境变量 | 将编译器路径添加到PATH(Windows) |
| 创建项目和文件 | 创建项目文件夹,编写源代码 |
| 配置编译任务 | 编辑tasks.json,定义编译命令和参数 |
| 配置调试环境 | 编辑launch.json,设置调试器和程序路径 |
| 配置IntelliSense | 编辑c_cpp_properties.json,完善代码提示 |
| 常见问题解决 | 处理编译器路径、调试器、IntelliSense等问题 |
结语
在VS Code中配置C/C++开发环境可能需要一些初始设置,但一旦配置完成,您将享受到这款编辑器带来的高效开发体验。希望本指南能帮助您顺利搭建环境,开启您的C/C++编程之旅。

相关文章:
使用Visual Studio Code配置C/C++开发环境的全面指南
目录 引言 一、准备工作 1. 安装Visual Studio Code 2. 安装C/C编译器 3. 配置环境变量(仅Windows用户) 二、在VS Code中安装C/C扩展 三、创建您的第一个C/C项目 1. 创建项目文件夹 2. 打开项目文件夹 3. 创建源文件 四、配置任务(…...
算法练习题26——多项式输出(模拟)
输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数。 第二行有 n1 个整数,其中第 i 个整数表示第 n−i1 次项的系数,每两个整数之间用空格隔开。 输出格式 输出共 1 行,按题目所述格式输出多项式。…...
卷积神经网络经典模型架构简介
【图书推荐】《PyTorch深度学习与企业级项目实战》-CSDN博客 《PyTorch深度学习与企业级项目实战(人工智能技术丛书)》(宋立桓,宋立林)【摘要 书评 试读】- 京东图书 (jd.com) ImageNet是一个包含超过1 500万幅手工标记的高分辨率图像的数据…...
【Kubernetes】常见面试题汇总(十三)
目录 39.简述 Kubernetes Scheduler 使用哪两种算法将 Pod 绑定到 worker 节点? 40.简述 Kubernetes kubelet 的作用? 41.简述 Kubernetes kubelet 监控 Worker 节点资源是使用什么组件来实现的? 39.简述 Kubernetes Scheduler 使用哪两种算…...
嵌入式QT开发:构建高效智能的嵌入式系统
摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面…...
Linux抢占调度
目录 抢占流程 抢占时机 用户态抢占时机 1、 从系统调用返回用户空间 2、 从中断返回用户空间 内核态抢占时机 1、中断处理程序返回内核空间 可以看到最终是到了 preempt_schedule_irq 2、当内核从non-preemptible(禁止抢占)状态变成pr…...
k8s中,为什么把pod的服务以deployment的形式通过nodeport对外发布,以及容器和虚拟机的一些区别
deployment是个控制器 主要负责管理pod,来代表k8s集群向外提供稳定的服务。 说,k8s有很多优点。 说k8s的优点,可能先需要说容器提供的便利。 同样的硬件资源 跑几个虚拟机,每个虚拟机上跑几个服务。 就挺重了。风扇呼呼叫 …...
PMP--一模--解题--41-50
文章目录 14.敏捷--方法--回顾--回顾是最重要的一个实践,原因是它能让团队学习、改进和调整其过程。41、 [单选] 新项目中的所有团队成员都希望通过尽快交付价值来获得客户的信任。项目经理了解到一个资源已经在其他项目中与发起人一起工作。某资源似乎在使用个人影…...
Kafka启动关闭及其相关命令kafka启动、状态监控、日常操作
开启zookeeper命令(备注:先进入zookeeper的bin目录) ./zkServer.sh start 关闭zookeeper命令(备注:先进入zookeeper的bin目录) ./zkServer.sh stop Kafka启动命令(备注:先进入kafka目录) 常规模式启动kafka bin/kafka-server-start.sh config/server.properties 进程守…...
CentOS 系统设置与维护教程
CentOS 系统设置与维护教程 在这篇博客中,我们将介绍在 CentOS 系统上进行的一些常见操作,包括停止和禁用防火墙服务、配置 SELinux。我们还将展示如何切换到 root 用户以执行这些操作。通过这些操作,你可以更好地管理和配置你的 CentOS 环境…...
流量牵引技术与传统防火墙的区别
在网络安全领域,流量牵引技术和传统防火墙都起着重要的作用,但它们在很多方面存在着明显的区别。 一、工作原理不同 传统防火墙主要是通过设置访问控制规则来过滤网络流量。它基于预先设定的策略,对进入和离开网络的数据包进行检查…...
【Python爬虫系列】_020.异步协程asyncio
课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈…...
ubuntu22安装docker
1、查看服务器系统信息 uname -a:显示内核名称、主机名、内核版本、处理器类型等信息。 lsb_release -a:显示有关 Ubuntu 发行版的详细信息,包括版本号、代号等。 free -h:查看系统内存使用情况。 df -h:查看磁盘空间使…...
【拥抱AI】如何使用Pandas进行数据分段
安装Pandas库 如果您的环境中尚未安装Pandas库,可以使用pip命令进行安装: pip install pandas导入Pandas库 在Python脚本中,导入Pandas库以便使用其数据处理功能: import pandas as pd读取文本文件 使用Pandas的read_csv函数…...
Docker Compose version v2.29.2 提示 exited with code 0 解决方案
问题描述: 使用 docker-compose up 启动容器时,老是报错exited with code 0,容器要么处于退出,要么处于重启阶段,查明原因后,是因为docker容器执行任务完成后就会处于exited状态,必须强制状态。…...
深度学习速通系列:依存分析
依存分析(Dependency Parsing)是自然语言处理(NLP)中的一项任务,目的是确定句子中单词之间的依存关系,并将这些关系表示为一个有向图,通常称为依存树。在依存树中,每个节点代表一个单…...
玩转扩展库,温湿度传感器篇!—合宙Air201资产定位模组LuatOS快速入门05
随着LuatOS快速入门系列教程的推出,小伙伴们学习热情高涨。 合宙Air201不仅支持三种定位方式,还具有丰富的扩展功能,通过外扩BTB链接方案,最多可支持21个IO接口:SPI、I2C、UART等多种接口全部支持。 本期,…...
【人工智能】人工智能领域中的线性回归算法原理、应用场景及代码示例。
🏆🏆欢迎大家来到我们的天空🏆🏆 🏆🏆如果文章内容对您有所触动,别忘了点赞、关注,收藏! 🏆 作者简介:我们的天空 🏆《头衔》&#x…...
day18JS-微任务、宏任务和node.js
1. 代码的执行流程 代码的执行流程分为同步与异步。 2. 什么样子的是宏任务? 1. setTimeout 和 setInterval 定时器: 没有写时间(传参的),代表下一帧执行,如果没有其他任务1ms后执行。 // 没有写时间(传参的),代表下…...
Mega Stamp Bundle 地形合集捆绑包峡谷沙丘山脉
终极套装,满足所有地形雕刻需求! 自2015年Gaia发布以来,我们团队就发明了印章技术,欢迎来到Mega Stamp Bundle! 本套装包含14个印章包,单次购买即可享受大幅折扣,共获得140个专业设计的印章。 这些印章可与Unity Terrain Tools、Gaia以及任何使用印章高度图图像的工具…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
SiFli 52把Imagie图片,Font字体资源放在指定位置,编译成指定img.bin和font.bin的问题
分区配置 (ptab.json) img 属性介绍: img 属性指定分区存放的 image 名称,指定的 image 名称必须是当前工程生成的 binary 。 如果 binary 有多个文件,则以 proj_name:binary_name 格式指定文件名, proj_name 为工程 名&…...
