如何在 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 等,以提升开发体验。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/66165.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GNU链接器简介

GNU链接器简介 1 使用简单程序简介链接脚本1.1 测试程序1.2 编译测试程序1.2.1 不使用链接器编译1.2.1.1 不使用链接器编译1.2.1.2 读取objdump_test 的结构 1.2.2 使用链接器去链接1.2.2.1 链接脚本1.2.2.2 使用链接脚本编译1.2.2.3 读取objdump 的结构 2 链接脚本2.1 基本连接…

牛客月赛108

目录 A. 小S按按钮 C. 小T数星星 E. 小M种树 A. 小S按按钮 &#xff08;1&#xff09; 二分答案的右边界一定要开大。若 x 等于 0&#xff0c;最多 2 * y 次 &#xff08;2&#xff09;根据是要最小还是最多&#xff0c;调整 if ( check ( mid ) ) 里的是 l 还是 r #include&l…

C++语言编程————C++的输入与输出

1.面向过程的程序设计和算法 在面向过程的程序设计中&#xff0c;程序设计者必须指定计算机执行的具体步骤&#xff0c;程序设计者不仅要考虑程序要“做什么”&#xff0c;还要解决“怎么做”的问题&#xff0c;根据程序要“做什么”的要求&#xff0c;写出一个个语句&#xff…

TIM的输入捕获

IC&#xff08;Input Capture&#xff09;输入捕获 输入捕获模式下&#xff0c;当通道输入引脚出现指定电平跳变时&#xff0c;当前CNT的值将被锁存到CCR中 我们使用测周法测频率 void IC_Init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);RCC_APB1PeriphCl…

RISC-V学习笔记

1.RISC ISA1个基本整数指令集多个可选的扩展指令集&#xff0c;如RV32I表示支持32位整数指令集。I表示基本指令集&#xff0c;M表示整数乘法与除法指令集&#xff0c;A表示存储器原子指令集&#xff0c;F表示单精度浮点指令集&#xff0c;D表示双精度浮点指令集等&#xff0c;C…

Scala_【5】函数式编程

第五章 函数式编程函数和方法的区别函数声明函数参数可变参数参数默认值 函数至简原则匿名函数高阶函数函数作为值传递函数作为参数传递函数作为返回值 函数闭包&柯里化函数递归控制抽象惰性函数友情链接 函数式编程 面向对象编程 解决问题时&#xff0c;分解对象&#xff…

golang:微服务架构下的日志追踪系统(二)

背景 在使用Gin框架进行服务开发时&#xff0c;我们遇到了一个日志记录的问题。由于Gin的上下文&#xff08;*gin.Context&#xff09;实现了context.Context接口&#xff0c;在调用日志记录器的Info、Warn、Error等方法时&#xff0c;直接传递Gin的上下文通常不会导致编译错误…

美国宏观经济基础框架梳理

玩转币圈和美股&#xff0c;最关键的是理解美国宏观经济。以下是核心逻辑&#xff1a;美国经济数据→政策调整→资金流动→资产价格变化。掌握这些因素的关系&#xff0c;才能在市场中立于不败之地。 一、核心变量及其意义 1. GDP&#xff08;国内生产总值&#xff09; • …

Java Map集合、集合的嵌套

一. 概述 1. Map集合称为双列集合&#xff0c;格式&#xff1a;{key1value1, key2value2,.....},一次需要存一对数据作为一个元素。 2. Map集合的每个元素"keyvalue"称为一个键值对/键值对对象/一个Entry对象&#xff0c;Map集合也被称为"键值对集合"。 3.…

spring防止重复点击,两种注解实现(AOP)

第一种&#xff1a;EasyLock 简介 为了简化可复用注解&#xff0c;自己实现的注解&#xff0c;代码简单随拿随用 使用方式 1.创建一个注解 Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface EasyLock {long waitTime() default …

微服务拆分的艺术:构建高效、灵活的系统架构

目录 一、微服务拆分的重要性 二、微服务拆分的策略 1. 按照业务领域拆分 2. 按照团队结构拆分 3. 按照业务边界拆分 4. 按照数据和数据库拆分 5. 按照用户界面或外部接口拆分 6. 按照功能模块或领域驱动设计拆分 7. 按照性能和可伸缩性需求拆分 三、微服务拆分的实践…

中建海龙:科技助力福城南产业片区绿色建筑发展

在快速发展的城市化进程中&#xff0c;绿色建筑以其环保、节能、可持续的特点日益受到重视。作为建筑工业化领域的领军企业&#xff0c;中建海龙科技有限公司&#xff08;简称“中建海龙”&#xff09;凭借其卓越的科技实力和创新举措&#xff0c;在推动绿色建筑发展方面做出了…

大模型数据采集和预处理:把所有数据格式,word、excel、ppt、jpg、pdf、表格等转为数据

大模型数据采集和预处理&#xff1a;把所有数据格式&#xff0c;word、excel、ppt、jpg、pdf、表格等转为数据 文本/图片/表格&#xff0c;分别提取处理工具选择不同格式文件&#xff0c;使用不同工具处理1. 确认目标2. 分析过程(目标-手段分析法)3. 实现步骤4. 代码封装效果展…

三甲医院等级评审八维数据分析应用(五)--数据集成与共享篇

一、引言 1.1 研究背景与意义 随着医疗卫生体制改革的不断深化以及信息技术的飞速发展,三甲医院评审作为衡量医院综合实力与服务水平的重要标准,对数据集成与共享提出了更为严苛的要求。在传统医疗模式下,医院内部各业务系统往往各自为政,形成诸多“信息孤岛”,使得数据…

论文泛读《LPFHE: Low-Complexity Polynomial CNNs for Secure Inference over FHE》

文章目录 1、摘要2、介绍3、文章结构4、总结 1、摘要 Machine learning as a service (MLaaS) 在客户中越来越受欢迎。为了解决 MLaaS 中的隐私问题&#xff0c;引入了 FHE 来保护客户端的数据。  然而&#xff0c;FHE 不能直接评估 卷积神经网络 (CNNs) 中的非算数激活函数。…

Redission红锁

目录 一、什么是红锁 二、Redission红锁的使用 一、什么是红锁 Redis 的作者 Salvatore Sanfilippo&#xff08;又名 antirez&#xff09;提出的一种基于多个 Redis 实例实现分布式锁的算法。红锁&#xff08;Redlock&#xff09;旨在解决单点故障问题&#xff0c;即当使用单…

VTK 鼠标+键盘重构

1、鼠标事件 如果有鼠标事件处理等相应的需求,可以重写该事件。 void OnMouseMove() override; //鼠标移动事件 void OnLeftButtonDown() override;//左键按下事件 void OnLeftButtonUp() override;//左键抬起事件 void OnMiddleButtonDown() override;//滚轮按下事件 …

ELK 使用教程采集系统日志 Elasticsearch、Logstash、Kibana

前言 你知道对于一个系统的上线考察&#xff0c;必备的几样东西是什么吗&#xff1f;其实这也是面试中考察求职者&#xff0c;是否真的做过系统开发和上线的必备问题。包括&#xff1a;服务治理(熔断/限流) (opens new window)、监控 (opens new window)和日志&#xff0c;如果…

node内置模块之---path 模块

path 模块的作用 path 模块是 Node.js 的核心模块之一&#xff0c;提供了用于处理和转换文件路径的功能。它能帮助你在不同操作系统间处理文件路径时避免平台差异&#xff08;如 Windows 和 Unix 系统使用不同的路径分隔符&#xff09; path 模块api介绍 使用场景&#xff1a; …

STM32G0B1 can Error_Handler 解决方法

问题现象 MCU上电&#xff0c;发送0x13帧数据固定进入 Error_Handler 硬件介绍 MCU :STM32G0B1 can:NSI1042 tx 接TX RX 接RX 折腾了一下午&#xff0c;无解&#xff0c;问题依旧&#xff1b; 对比测试 STM32G431 手头有块G431 官方评估版CAN 模块&#xff1b; 同样的…