本文主要记录 Visual Studio Code 中配置 C/C++ 的开发环境,包括项目设置、编译选项和调试配置。VScode是编辑器,我们还需要安装编译器,才能实现编写程序到生成可执行文件这一流程。关于编辑器,编译器和IDE如果有些分不清,可以看这篇 编辑器,编译器和IDE的梳理

在VS Code中配置C++开发环境需要完成编译器安装扩展配置调试环境设置三个核心步骤。具体记录如下:

一、前置准备

  1. 安装VS Code
    从VS Code官网下载对应系统版本(Windows/macOS/Linux),按向导完成安装即可。

    • 只要操作系统对应上,就没啥大问题。如果电脑是自己一直用一个账户(PIN登录解锁)用的,那么User InstallerSystem Installer 安装哪个没什么大的差别,用户版安装目录和配置都会生成在用户目录下,系统版则是在系统的目录下。
    • 此外, 安装过程中出现下面这个界面,这里进行了红字标注做出了说明。全勾选基本没什么副作用,如果有主用的编辑器(比如Notepad++什么的),倒数第二个可以不用勾选,这个选项的作用就是对某些文件默认打开方式的意思,基本上也就是js,html这些文本文件。
      在这里插入图片描述
  2. 安装C++扩展

    • 如果不习惯英文,可以在扩展里安装微软官方的中文包插件,重新打开VScode生效。
    • 打开VS Code → 左侧导航栏点击「扩展」(或按Ctrl+Shift+X打开扩展商店)→ 搜索「C/C++」→ 安装微软官方的 [C/C++]。
      可选装「C/C++ Extension Pack」(这个是包含调试、格式化等工具)。
    • 选择图中带有Microsoft认证标识的就对了,官方的,也是最多人选的。
    • C/C++的扩展仅仅是方便配置编译器目录以及相关的编译命令的,使用VScode编译运行指令下,能识别到系统上安装的编译器。

二、安装编译器(关键步骤)

VS Code本身不自带编译器,即便是安装C/C++扩展,也不会自动下载编译器,我们需根据系统安装对应的编译器和工具链。
基本上市面主流的编译器也就三种:GCC/G++,Clang/Clang++,以及MSVC。
如果之前安装过其他 IDE或者编译器,比如 Devcpp,codeblocks等,电脑已有的编译器实际上也可以使用,无需安装,但是即便安装了也不会让电脑爆炸,占空间也不是很大,所以也可以安装,后期不需要卸载即可。
更多捆绑文章可选择了解:C/C++的编译器

1. Windows系统(推荐MinGW-w64)

MinGW-w64 是 GCC/G++编译器,附带上 C/C++ 标准库(如 stdio.h、iostream 对应的实现)、链接器(ld)、调试工具(gdb)等,对Windows作出了适配。
换句话说,在windows系统上,想使用GCC/G++编译器,安装我就对了,除了编译功能,在windows运行需要的额外的工作,我都安排好了。

  • 下载MinGW-w64
    访问MinGW-w64官网,选择「Downloads」→ 推荐通过SourceForge镜像下载,选择适合的版本(如x86_64-posix-seh,64位系统推荐)。
  • 安装与配置系统环境变量
    配置系统环境变量并非必选项,在VScode中会需要配置,这里配置了只是有利于电脑的程序“识别”,会比较方便用。
    • 安装时推荐选择「Add to PATH」(或手动添加),安装路径建议无空格(如C:\mingw64)。

    • 如果安装是没有选择添加到 PATH,手动打开环境变量,在path下添加路径,见下文 补充:系统环境变量

    • 验证:按Win+R输入cmd,执行g++ --versiongcc --version,若显示版本信息则安装成功。

如果在windows想既使用GCC/G++,又想试试Clang/Clang++的,可以参考<留个眼,以后补充>。
至于MSVC,下载安装Visual Studio(紫色图标,另一个软件)一般默认自带的。

2. macOS系统(使用Clang)
  • 打开终端,执行命令安装Xcode命令行工具:
    xcode-select --install
    
  • 验证:终端输入clang --version,显示版本信息即成功。
3. Linux系统(使用GCC)
  • 终端执行以下命令安装GCC工具链(以Ubuntu为例):
    sudo apt update
    sudo apt install build-essential gdb
    
  • 验证:输入gcc --versiongdb --version,显示版本信息即成功。

三、创建并配置项目

这一段主要流程是创建文件夹,文件夹里新建C文件,C++文件,写一段测试的代码。
代码写完了,需要配置VScode,让他能够找到编译器路径,使源代码能被编译生成可执行文件。

VScode的配置一般都是通过修改json文件实现的,当然也有界面里用鼠标点击选择之类的界面操作。前者只针对某个项目文件夹的配置,后者则是全局设置,相当于VScode打开文件夹都默认的配置。若某个项目有json文件配置,则VScode优先使用json的设置,否则使用全局配置。
这里介绍的是使用json文件的配置,只适用于当前项目文件夹,下次打开其他项目文件夹,此json配置不会凑效,但是可以考虑修改拷贝过去使用。配置文件的好处是到另一个电脑上,微改配置文件就能用了。
配置一般会涉及到两个文件task.jsonlaunch.json。前者是k代码编译需要的配置,后者是调试需要的配置。

  1. 创建项目文件夹
    新建一个空文件夹,名字无所谓(如cpp-demo),用 VS Code打开(「文件」→「打开文件夹」)。虽然名字无所谓,但还是建议,以后编程时 养成使用英文命名项目中文件夹和文件名的好习惯。

  2. 创建测试代码
    在文件夹中新建hello.c文件,hello是文件名,c是文件后缀名,表明这是c类型的文件。
    在这里插入图片描述

    输入基础代码,先不管它什么意思:

    #include <stdio.h>
    int main(){printf("Hello World");getchar();return 0;
    }
    
  3. 配置编译任务(tasks.json)
    编译任务用于告诉 VS Code 如何调用 g++ 编译代码,用于定义编译命令:

    • Ctrl+Shift+P打开命令面板,输入「Tasks: Configure Default Build Task」→ 选择「C/C++: g++ 生成活动文件」(Windows)或「C/C++: clang++ 生成活动文件」(macOS/Linux)。
      弹窗会有提示你的编译器路径,选择刚才安装的编译器路径即可(或者电脑已有的编译器路径),此处的选择会自动把下面的 “command” 填好。
    • 上一步选择好之后,会自动生成.vscode/tasks.json,默认配置如下(可根据需要修改):
      其中,"label"是自动生成的,编译时显示的任务名,可自行修改,后面配置launch也会要用到。
      "command"是必填项,配置编译器路径,上一步会自动生成,可自行检查路径是否正确。如果想换编译器,在这里改即可。
      "args"最后一个参数是生成可执行文件exe,一般为同名exe文件。可鼠标悬停查看具体释义。
      {"version": "2.0.0","tasks": [{"type": "cppbuild","label": "C/C++: gcc.exe 生成活动文件",    // 任务名称,调试配置在 launch.json文件,需匹配"command": "C:\\msys64\\ucrt64\\bin\\gcc.exe",  // 编译器路径(Windows为mingw64的g++.exe路径,识别成功会自动写好,否则自己改"args": [ // 编译参数"-fdiagnostics-color=always","-g", // 生成调试信息"${file}", // 当前活动文件"-o", // 输出文件名"${fileDirname}\\${fileBasenameNoExtension}.exe" // 输出路径(与源文件同目录)],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true  //默认编译器的意思},"detail": "编译器: C:\\msys64\\ucrt64\\bin\\gcc.exe"}]
      }	
      
  4. 配置调试环境(launch.json)
    调试配置用于告诉 VS Code 如何调用 gdb 进行调试,用于设置调试参数:

    • 点击左侧「运行和调试」(或按Ctrl+Shift+D)→ 点击「创建launch.json文件」→ 选择「C++ (GDB/LLDB)」→ 选择对应编译器(如g++)。
    • 自动生成.vscode/launch.json,关键配置如下:
      其中,"program"就是之前生成的exe路径, 需要替换一致。
      "preLaunchTask"一定要放在"miDebuggerPath"之前,意思是调试程序之前编译。与task.json中的label要一致,拷贝过来即可。
      “miDebuggerPath” 设置的是调试器的路径,一般与编译器同文件夹,文件名为gdb.exe。自行检查是否存在且路径正确。
      {"version": "0.2.0","configurations": [{"name": "(gdb) 启动","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe",  //待调试的程序路径。是需要自己改的,换成task.json中的输出路径即可。"args": [],"stopAtEntry": false,    // 是否在main函数处断点(暂停)"cwd": "${fileDirname}","environment": [],"externalConsole": false, // 是否使用外部控制台,这里在VScode终端,true则是用黑框"MIMode": "gdb","preLaunchTask": "C/C++: g++ 生成活动文件", // 必须项。调试前执行的任务(需与tasks.json的label一致)"miDebuggerPath": "C:\\msys64\\ucrt64\\bin\\gdb.exe",  // 调试器路径(Windows为mingw64的gdb.exe路径,一般与gcc.exe同目录)"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description": "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]}]
      }
      

四、测试配置

  1. 编译运行
    编译:
    打开hello.cpp,按Ctrl+Shift+B执行编译任务,成功后,这里的配置会在同目录生成hello.exe
    运行:
    方法 1(仅运行):在 VS Code 终端中输入 .\hello.exe 执行。
    方法 2(调试运行):按下 F5 启动调试,可设置断点、单步执行等(调试控制台会显示输出)。

  2. 调试代码
    在代码中设置断点(点击行号左侧会设置红点),按F5启动调试,可使用「继续(F5)」「单步跳过(F10)」「单步调试(F11)」等功能。

运行结果为 Hello World


五、常见问题解决 FAQ

  1. “找不到gcc/clang”

    1. 检查编译器是否安装,找到mingw的安装目录,看看是否有gcc。exe这个程序。
    2. VScode中的task配置文件路径是否对应上。
      如果是使用全局设置,在设置中,找到C/C++扩展的环境(编译器)路径是否对应。
  2. 中文乱码
    tasks.jsonargs中添加-fexec-charset=GBK(Windows)或-fexec-charset=UTF-8(跨平台)。

  3. 调试时无法命中断点:
    确保 tasks.json 中包含 -g 选项(生成调试信息),且 launch.jsonpreLaunchTask 与编译任务的 label 一致。

  4. 不是内部或外部的命令
    在终端或者命令行,输入程序(exe)名未被识别到才会提示这段反馈。
    设置过系统环境变量情形:在任意一个命令行中输入,都是会检测识别到的,检查环境变量是否设置正确,以及命令是否输错了。
    没有配置环境变量情形:需要在终端/命令行,进入相对应的exe文件所在目录,再输入程序名。

  5. 右下角总是弹窗:

    “‘cl’ 不是内部或外部命令,也不是可运行的程序或批处理文件。”
    “cl.exe” build and debug is only usable when VS Code is run from the Developer Command Prompt for VS. 的问题。

    这是因为你配置的编译器使用的是cl.exe,这是MSVC 编译器,你的电脑大概率安装了Visual Studio,并且没有添加到系统环境变量。
    微软的 cl.exe(MSVC 编译器)依赖一系列特殊的环境变量(如编译器路径、库路径、头文件路径等),这些变量只有在 “VS 开发者命令提示符” 中才会被自动加载。
    直接双击启动 VS Code 时,它继承的是系统默认环境变量,会缺少这些关键配置,因此无法正常使用 cl.exe 进行编译和调试。
    解决方案一: 从Deveioper Command Prompt for ***打开VScode。开始菜单找到类似图中的程序,或者直接使用win+s 搜这个名字,可能会因版本不同最后的名字不一样。启动之后,会发现这个程序就是一个黑框终端,在终端输入code回车即可打开VScode(前提是VScode添加到PATH),现在打开的就不会报错。
    在这里插入图片描述
    解决方案二: 将编译器路径改成其他路径编译器,不使用MSVC编译器。

补充:系统环境变量

  1. 打开系统属性。快捷键win+r唤出运行,输入sysdm.cpl ,打开系统属性。全称大概是(system data manager . Control Panel extension)
  2. 在高级中,找到环境变量。
    在这里插入图片描述
  3. 在用户变量和系统变量中,各自有一个path。实际运行时,系统会先找到用户变量中的内容,找不到再去找系统变量中的path,所以这两者随便选一个添加即可。建议安装在用户下的程序添加用户变量,管理员权限的添加在系统变量下。
  4. 双击path,会跳出编辑的弹窗,新建即可添加程序的路径。
    建议使用浏览寻找,找到exe所在目录即可。比如如果手动配置GCC编译器,找到gcc.exe,一般就是bin目录。
    也可以直接编辑,粘贴程序的目录。但是要注意不能拼错。
    在这里插入图片描述

总结

核心步骤是:配置 MinGW 环境变量 → 安装 C/C++ 扩展 → 生成并修改 tasks.json(编译)和 launch.json(调试)。通过这种配置,VS Code 能直接调用 GCC 工具链,实现 C 代码的编译、运行和调试,此外,C++代码的配置与之类似,只不过编译器为g++.exe

参考:
我写的很乱,这个博主很详细:VS Code 配置 C/C++ 编程运行环境(保姆级教程)
https://blog.csdn.net/qq_43328313/article/details/138898223
https://blog.csdn.net/Natsuago/article/details/145507915

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

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

相关文章

【营销策略算法】关联规则学习-购物篮分析

Apriori算法是关联规则学习领域中最经典、最著名的算法之一&#xff0c;用于从大规模数据集中发现有价值的关联规则。最典型的例子就是购物篮分析&#xff0c;通过分析顾客的购物篮&#xff0c;发现商品之间的关联关系&#xff0c;从而制定营销策略&#xff08;如“买尿布的顾客…

行为式验证码技术解析:滑块拼图、语序选词与智能无感知

随着传统字符验证码逐渐被 OCR 与自动化脚本攻破&#xff0c;越来越多业务开始采用 行为式验证码 来区分真人与机器。这类验证码不仅依赖用户的操作行为&#xff0c;还结合图形干扰、环境信息和风控模型&#xff0c;既提升了安全性&#xff0c;也改善了用户体验。 常见的实现方…

基于多项式同态加密和秘密共享的JPEG可逆信息隐藏

学习题为《Reversible steganography in cipher domain for JPEG images using polynomial homomorphism》的论文随着物联网&#xff08;IoT&#xff09;设备的普及&#xff0c;大量敏感数据&#xff08;如指纹、身份信息&#xff09;需要在云端传输和存储。传统隐写技术虽然能…

从 0 到 1 攻克订单表分表分库:亿级流量下的数据库架构实战指南

引言&#xff1a; 本文总字数&#xff1a;约 8500 字建议阅读时间&#xff1a;35 分钟 当订单表撑爆数据库&#xff0c;我们该怎么办&#xff1f; 想象一下&#xff0c;你负责的电商平台在经历了几个双十一后&#xff0c;订单系统开始频繁出现问题&#xff1a;数据库查询越来…

网络编程(5)Modbus

【1】Modbus 1. 起源Modbus由Modicon公司于1979年开发&#xff0c;是全球第一个真正用于工业现场的总线协议在中国&#xff0c;Modbus 已经成为国家标准&#xff0c;并有专业的规范文档&#xff0c;感兴趣的可以去查阅相关的文件&#xff0c;详情如下&#xff1a;标准编号为:GB…

WordPress性能优化全攻略:从插件实战到系统级优化

一、性能诊断&#xff1a;定位瓶颈是优化第一步 在对 WordPress 进行性能优化前&#xff0c;精准定位性能瓶颈至关重要。这就好比医生看病&#xff0c;只有先准确诊断&#xff0c;才能对症下药。下面将从核心性能指标检测工具和服务器基础性能排查两个方面展开。 1.1 核心性能…

十、网络与信息安全基础知识

1 网络概述 1.1 计算机网络的概念 1.1.1 计算机网络的发展 计算机网络的发展经历了四个主要阶段&#xff1a; 具有通信功能的单机系统&#xff1a; 早期形式&#xff1a;一台计算机连接多个终端。例子&#xff1a;20 世纪 50 年代的 SAGE 系统。 具有通信功能的多机系统&#x…

校园管理系统|基于SpringBoot和Vue的校园管理系统(源码+数据库+文档)

项目介绍 : SpringbootMavenMybatis PlusVue Element UIMysql 开发的前后端分离的校园管理系统&#xff0c;项目分为管理端和用户端和院校管理员端 项目演示: 基于SpringBoot和Vue的校园管理系统 运行环境: 最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理…

新后端漏洞(上)- Weblogic SSRF漏洞

漏洞介绍&#xff1a;Weblogic中存在一个SSRF漏洞&#xff0c;利用该漏洞可以发送任意HTTP请求&#xff0c;进而攻击内网中redis、fastcgi等脆弱组件。编译及启动测试环境docker-compose up -d访问http://127.0.0.1:7001/uddiexplorer/&#xff0c;无需登录即可查看uddiexplore…

Fiddler 实战案例解析,开发者如何用抓包工具快速解决问题

在现代软件开发中&#xff0c;网络通信问题几乎是最常见的 Bug 来源。无论是前端调用后端 API、移动端与服务端交互&#xff0c;还是第三方 SDK 请求&#xff0c;都会因为参数错误、环境差异、网络条件不稳定而出现各种难以复现的问题。 在这些场景下&#xff0c;日志往往并不…

【佳易王药品进销存软件实测】:操作简单 + 全流程管理,医药台账管理好帮手#软件教程全解析

前言&#xff1a; &#xff08;一&#xff09;试用版获取方式 资源下载路径&#xff1a;进入博主头像主页第一篇文章末尾&#xff0c;点击卡片按钮&#xff1b;或访问左上角博客主页&#xff0c;通过右侧按钮获取详细资料。 说明&#xff1a;下载文件为压缩包&#xff0c;使用…

【设计模式】UML 基础教程总结(软件设计师考试重点)

【设计模式】UML 基础教程总结(软件设计师考试重点) 统一建模语言(Unified Modeling Language,UML),是一种标准化的面向对象建模语言,用于可视化、规范化和文档化软件系统设计。 参考资料:UML基础教程资料(可用于软件设计师考试)! (关注不迷路哈!!!) 文章目录 【…

vite_react 插件 find_code 最终版本

vite_react 插件 find_code 最终版本当初在开发一个大型项目的时候&#xff0c;第一次接触 vite 构建&#xff0c;由于系统功能很庞大&#xff0c;在问题排查上和模块开发上比较耗时&#xff0c;然后就开始找解决方案&#xff0c;find-code 插件方案就这样实现出来了&#xff0…

Python+DRVT 从外部调用 Revit:批量创建梁(2)

接着昨天的示例&#xff0c;继续创建梁&#xff0c;这次展示以椭圆弧、Nurbs为轴线。 创建以椭圆弧为轴线的梁 椭圆弧曲线的创建&#xff1a; # 创建椭圆弧 def CreateEllipse(ctx : MyContext, z: float) -> DB.Curve:"""create a horizontal partial el…

Flutter × 鸿蒙系统:一文搞懂如何将你的 App 移植到 HarmonyOS!

摘要 Flutter 是一个高效的跨平台框架&#xff0c;开发者可以使用同一套代码快速部署到 Android、iOS 等主流平台。随着华为鸿蒙系统&#xff08;HarmonyOS&#xff09;的崛起&#xff0c;越来越多开发者希望能将已有的 Flutter 应用迁移到鸿蒙生态中运行。目前&#xff0c;通过…

QML Charts组件之主题与动画

目录前言相关系列ChartView 概述&#xff1a;主题与动画示例一&#xff1a;主题设置&#xff08;ChartTheme.qml&#xff09;图表与主题设置主题切换部分示例二&#xff1a;动画设置&#xff08;ChartAnimation.qml&#xff09;图表与动画属性部分分类轴与柱状图数据部分交互与…

【论文阅读】Security of Language Models for Code: A Systematic Literature Review

Security of Language Models for Code: A Systematic Literature Review 该论文于2025年被CCF A类期刊TOSEM收录&#xff0c;作者来自南京大学和南洋理工大学。 概述 代码语言模型&#xff08;CodeLMs&#xff09;已成为代码相关任务的强大工具&#xff0c;其性能优于传统方法…

[光学原理与应用-422]:非线性光学 - 计算机中的线性与非线性运算

在计算机科学中&#xff0c;线性运算和非线性运算是两类核心的数学操作&#xff0c;它们在算法设计、数据处理、机器学习等领域有广泛应用。两者的核心区别在于是否满足叠加原理&#xff08;即输入信号的线性组合的输出是否等于输出信号的线性组合&#xff09;。以下是详细解释…

Day21_【机器学习—决策树(3)—剪枝】

决策树剪枝是一种防止决策树过拟合的一种正则化方法&#xff1b;提高其泛化能力。决策树在训练过程中如果生长过深、过于复杂&#xff0c;会过度拟合训练数据中的噪声和异常值&#xff0c;导致在新数据上表现不佳。剪枝通过简化树结构&#xff0c;去除不必要的分支&#xff0c;…

从零构建企业级LLMOps平台:LMForge——支持多模型、可视化编排、知识库与安全审核的全栈解决方案

&#x1f680; 从零构建企业级LLMOps平台&#xff1a;LMForge——支持多模型、可视化编排、知识库与安全审核的全栈解决方案 &#x1f517; 项目地址&#xff1a;https://github.com/Haohao-end/LMForge-End-to-End-LLMOps-Platform-for-Multi-Model-Agents ⭐ 欢迎 Star &…