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

如何在 VSCode 中配置 C++ 开发环境:详细教程

如何在 VSCode 中配置 C++ 开发环境:详细教程

在软件开发的过程中,选择一个合适的开发环境是非常重要的。Visual Studio Code(VSCode)作为一款轻量级的代码编辑器,凭借其强大的扩展性和灵活性,受到许多开发者的青睐。本文将详细介绍如何在 VSCode 中配置 C++ 开发环境,包括安装必要的工具、配置编译器、设置调试环境等。希望通过这篇文章,能够帮助你快速搭建 C++ 开发环境,实现高效编程。

目录

  1. 什么是 VSCode?
  2. 安装 VSCode
  3. 安装 C++ 编译器
    • 3.1 Windows 系统
    • 3.2 macOS 系统
    • 3.3 Linux 系统
  4. 安装 C++ 扩展
  5. 创建 C++ 项目
  6. 编写和编译代码
  7. 配置调试环境
  8. 常见问题解答
  9. 总结

1. 什么是 VSCode?

Visual Studio Code 是微软推出的一款免费的开源代码编辑器,支持多种编程语言,包括 C++。它具有丰富的插件生态系统,可以通过安装扩展来增强功能,如代码高亮、智能提示、调试等。

2. 安装 VSCode

首先,你需要下载并安装 VSCode。访问 VSCode 官网 并选择适合你操作系统的版本进行下载。

在这里插入图片描述

安装完成后,启动 VSCode。

3. 安装 C++ 编译器

3.1 Windows 系统

在 Windows 系统上,推荐使用 MinGW 或者 Microsoft Visual C++(MSVC)。

安装 MinGW
  1. 下载 MinGW 安装程序:MinGW 下载页面

  2. 运行安装程序,选择 mingw32-basemingw32-gcc-g++ 进行安装。

  3. 安装完成后,将 MinGW 的 bin 目录添加到系统环境变量中。通常路径为 C:\MinGW\bin

    • 右键点击“我的电脑” -> “属性” -> “高级系统设置” -> “环境变量”。
    • 在“系统变量”中找到 Path,点击“编辑”,添加 C:\MinGW\bin

3.2 macOS 系统

在 macOS 上,可以通过 Homebrew 安装 GCC。

  1. 打开终端,输入以下命令安装 Homebrew(如果尚未安装):

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    
  2. 安装 GCC:

    brew install gcc
    

3.3 Linux 系统

在 Linux 系统上,可以使用包管理器安装 GCC。

  • Ubuntu/Debian

    sudo apt update
    sudo apt install build-essential
    
  • Fedora

    sudo dnf install gcc-c++
    

4. 安装 C++ 扩展

  1. 启动 VSCode,点击左侧活动栏中的扩展图标(或按 Ctrl + Shift + X)。

  2. 在搜索框中输入 C/C++,找到由 Microsoft 提供的 C/C++ 扩展并点击安装。

在这里插入图片描述

5. 创建 C++ 项目

  1. 在 VSCode 中,选择“文件” -> “新文件”,并保存为 main.cpp

  2. 编写一段简单的 C++ 代码,例如:

    #include <iostream>int main() {std::cout << "Hello, World!" << std::endl;return 0;
    }
    

6. 编写和编译代码

编译代码

  1. 打开终端(Ctrl + ),在终端中输入以下命令进行编译:

    • Windows

      g++ main.cpp -o main.exe
      
    • macOS/Linux

      g++ main.cpp -o main
      
  2. 编译成功后,运行程序:

    • Windows

      ./main.exe
      
    • macOS/Linux

      ./main
      

示例输出

Hello, World!

7. 配置调试环境

  1. 点击左侧活动栏中的“运行和调试”图标,选择“创建一个 launch.json 文件”。

  2. 选择 C++ (GDB) 选项,VSCode 会自动生成一个 launch.json 文件。

  3. 修改 launch.json 文件,确保 program 路径正确。例如:

    {"version": "0.2.0","configurations": [{"name": "C++ Launch","type": "cppdbg","request": "launch","program": "${workspaceFolder}/main", // 确保路径正确"args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": false,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "build","miDebuggerPath": "gdb","setupCommands": [{"text": "-enable-pretty-printing","description": "Enable pretty printing","ignoreFailures": true}]}]
    }
    
  4. 创建一个 tasks.json 文件,以便在调试之前自动编译代码。在 .vscode 文件夹中创建 tasks.json 文件,内容如下:

    {"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "g++","args": ["-g","main.cpp","-o","main"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"],"detail": "Generated task by Debugger."}]
    }
    
  5. 现在,你可以通过点击左侧的“运行和调试”按钮,选择“C++ Launch”来启动调试。

8. 常见问题解答

问题 1:编译时找不到 g++ 命令?

确保你已经将 MinGW 的 bin 目录添加到系统环境变量中,并重启 VSCode。

问题 2:调试时出现错误?

确保 launch.jsontasks.json 中的路径配置正确,并且程序已经成功编译。

问题 3:如何在终端中运行程序?

在终端中,使用 ./main(Linux/macOS)或 main.exe(Windows)命令运行编译后的程序。

9. 总结

通过以上步骤,你已经成功在 VSCode 中配置了 C++ 开发环境。现在你可以开始编写、编译和调试 C++ 程序了。VSCode 提供了强大的功能和灵活的配置,使得 C++ 开发变得更加高效和便捷。

最后提醒

  • 保持 VSCode 和扩展的更新,以获得最新的功能和修复。
  • 多尝试不同的扩展,如 CMake Tools、Code Runner 等,以提升开发体验。

希望这篇文章能对你有所帮助,祝你编程愉快!如果有任何问题,欢迎在评论区留言。

相关文章:

如何在 VSCode 中配置 C++ 开发环境:详细教程

如何在 VSCode 中配置 C 开发环境&#xff1a;详细教程 在软件开发的过程中&#xff0c;选择一个合适的开发环境是非常重要的。Visual Studio Code&#xff08;VSCode&#xff09;作为一款轻量级的代码编辑器&#xff0c;凭借其强大的扩展性和灵活性&#xff0c;受到许多开发者…...

三甲医院等级评审八维数据分析应用(一)--组织、制度、管理可视化篇

一、引言 1.1 研究背景与意义 在当今医疗领域,三甲医院作为医疗服务的核心载体,肩负着保障民众健康、推动医学进步的重任。随着信息技术的飞速发展,数据已成为医院运营管理、医疗质量提升以及科学决策的关键要素。三甲医院等级评审作为衡量医院综合实力与服务水平的重要标…...

2024 年度总结|勇敢去探索~

写作这件事&#xff0c;果然是一旦中断&#xff0c;就很难再拾起来。但年度总结这么有意义的话题&#xff0c;思来想去&#xff0c;万万不能落下。 工作 得益于同事们的帮衬和认可&#xff0c;年初的时候&#xff0c;我的角色发生了变化&#xff1a;需要开始承担部门内的一些…...

2024年, Milvus 社区的那些事

随着跨年钟声响起&#xff0c;2024 年告一段落。这一年&#xff0c;Milvus GitHub Stars 正式突破 3 万大关&#xff0c;Docker 下载量突破6700w 次&#xff0c;达到一个新的里程碑&#xff0c;在开源向量数据库领域继续引领前行。在这遥遥领先的数据背后&#xff0c;不妨让我们…...

vue代理问题

vue代理问题 场景:前后端分离项目问题,在前端中请求接口,返回数据这个过程,但是在这个过程中,前端会有两个环境,一个是开发环境,一个是生产环境. 在开发环境中请求接口可能会遇到跨域问题,比如请求的端口是3000,当前端口是8080,这时候就会遇到跨域问题,或者ip不同,也会存在跨…...

Git快速入门(三)·远程仓库GitHub以及Gitee的使用

目录 1. 远程仓库GitHub 1.1 登录 1.2 创建库 1.3 创建文件 1.4 修改文件 1.5 创建分支 1.6 删除库 1.7 将远程仓库下载到本地 1.7.1 关联登录 1.7.2 克隆 1.7.3 通过GitHub Desktop更改远程库 2. 远程仓库Gitee 2.1 登录 2.2 创建文件 2.3 关联…...

[开源]C++代码分享

一&#xff0c;声明 被人水平有限&#xff0c;开源只是为了分享。勿喷&#xff01;&#xff01;&#xff01;还请大佬指点。 二&#xff0c;代码 // --------------------------------------------------------- 头文件 ----------------------------------------------- #in…...

CSS3——3. 书写格式二

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><body><!--css书写&#xff1a;--><!--1. 属性名:属性值--><!--2.属性值是对属性的相关描述--><!--3.属性名必须是…...

PHP语言的计算机基础

计算机基础与PHP语言入门 在当今信息技术高速发展的时代&#xff0c;计算机已经成为我们日常生活中不可或缺的重要工具。学习计算机基础知识&#xff0c;不仅能增强我们对信息技术的理解&#xff0c;还会为我们后续学习编程语言打下良好的基础。本文将以PHP语言为切入点&#…...

第 23 章 JSON

第 23 章 JSON 23.1 语法 JSON 语法支持表示 3 种类型的值。 ❑ 简单值&#xff1a;字符串、数值、布尔值和 null 可以在 JSON 中出现&#xff0c;就像在 JavaScript 中一样。特殊值 undefined 不可以。 ❑ 对象&#xff1a;第一种复杂数据类型&#xff0c;对象表示有序键/值…...

Java 正则表达式入门与应用(详细版)

正则表达式&#xff08;Regular Expression&#xff0c;简称Regex&#xff09;是一种文本模式匹配工具&#xff0c;在许多编程语言中都得到了广泛应用。Java 作为一种强大的编程语言&#xff0c;提供了对正则表达式的内建支持&#xff0c;使得在字符串处理、数据验证和文本解析…...

洛谷:P1540 [NOIP2010 提高组] 机器翻译

[NOIP2010 提高组] 机器翻译 题目背景 NOIP2010 提高组 T1 题目描述 小晨的电脑上安装了一个机器翻译软件&#xff0c;他经常用这个软件来翻译英语文章。 这个翻译软件的原理很简单&#xff0c;它只是从头到尾&#xff0c;依次将每个英文单词用对应的中文含义来替换。对于…...

基于AT89C51单片机的可暂停八路抢答器设计

点击链接获取Keil源码与Project Backups仿真图&#xff1a; https://download.csdn.net/download/qq_64505944/90196607?spm1001.2014.3001.5503 C15 部分参考设计如下&#xff1a; 摘要 随着社会进步和科技发展&#xff0c;电子设备在各类活动中的应用日益普遍&#xff0c…...

面试题解,Java中的“对象”剖析

一、说一说JVM中对象的内存布局&#xff1f;new一个对象到底占多大内存&#xff1f; 话不多说&#xff0c;看下图&#xff0c;对象的内存布局图 一个对象的内存布局主要由三部分组成&#xff1a;对象头&#xff08;Object Header&#xff09;、实例数据&#xff08;Instance D…...

行为模式3.迭代器模式

行为型模式 模板方法模式&#xff08;Template Method Pattern&#xff09;命令模式&#xff08;Command Pattern&#xff09;迭代器模式&#xff08;Iterator Pattern&#xff09;观察者模式&#xff08;Observer Pattern&#xff09;中介者模式&#xff08;Mediator Pattern…...

第8章 DMA控制器

DMA的基本概念 DMA是用硬件实现不再通过CPU的&#xff0c;计算机内存储器与I/O设备之间的直接数据传送技术。该硬件称为DMA控制器&#xff08;简称DMAC)&#xff0c;用来控制数据的输入和输出&#xff0c;复杂性堪比CPU。 DMA方式可实现: 数据存储器RAM→I/O端口的DMA读传送I/O…...

后端java开发路由接口并部署服务器(四)

一、安装IntelliJ IDEA&#xff0c;安装包下载 1、官网下载 2、网盘资源 安装包下载完成后进行傻瓜式下一步安装就可以了 打开IntelliJ IDEA&#xff0c;输入网盘资源文件内容 三、汉化处理 插件搜索chinese&#xff0c;就会找到相应的插件安装重启软件即可 四、新建后端j…...

检索增强生成 和思维链 结合: 如何创建检索增强思维链 (RAT)?

论文地址&#xff1a;https://arxiv.org/pdf/2403.05313 Github地址&#xff1a;https://github.com/CraftJarvis/RAT 想象一下&#xff0c;一个人工智能助手可以像莎士比亚一样写作&#xff0c;像专家一样推理。这听起来很了不起&#xff0c;对吧&#xff1f;但是&#xff0…...

在 SQL 中,区分 聚合列 和 非聚合列(nonaggregated column)

文章目录 1. 什么是聚合列&#xff1f;2. 什么是非聚合列&#xff1f;3. 在 GROUP BY 查询中的非聚合列问题示例解决方案 4. 为什么 only_full_group_by 要求非聚合列出现在 GROUP BY 中&#xff1f;5. 如何判断一个列是聚合列还是非聚合列&#xff1f;6. 总结 在 SQL 中&#…...

单元测试3.0+ @RunWith(JMockit.class)+mock+injectable+Expectations

Jmockit使用笔记_基本功能使用Tested_Injectable_Mocked_Expectations_jmockit.class-CSDN博客 静态变量直接赋值就好&#xff0c;没必要mock了 测试框架Jmockit集合junit使用 RunWith(JMockit.class) 写在测试案例类上的注解 Tested 在测试案例中,写在我们要测试的类上…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

解锁数据库简洁之道:FastAPI与SQLModel实战指南

在构建现代Web应用程序时&#xff0c;与数据库的交互无疑是核心环节。虽然传统的数据库操作方式&#xff08;如直接编写SQL语句与psycopg2交互&#xff09;赋予了我们精细的控制权&#xff0c;但在面对日益复杂的业务逻辑和快速迭代的需求时&#xff0c;这种方式的开发效率和可…...

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...