使用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以及任何使用印章高度图图像的工具…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
FFmpeg:Windows系统小白安装及其使用
一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...
