Visual Studio Code搭建C语言"集成"开发环境

乐创客 2021-01-26 00:00
文/Edward


VSCode是微软一个基于Electron框架开发的新一代开源代码编辑器。之前我们在讲述C语言的时候,都是将其定位成为一个代码编辑器来使用的。使用其内嵌的Windows power shell当作命令行终端来执行MinGW的便宜命令,这种方式虽然比较麻烦,但是其开发的过程和方法最大地逼近了Linux下C语言的开发,因此,我们在之前的C语言讲述过程中,选择使用了这种开发方式。但是,这种方式随着你代码的复杂度提升,如果使用gdb工具去做代码的调试,其实是很不方便的,因为命令行为主的操作方式永远都比不过图形化界面来的方便。

本文的内容,将会讲述如何使用VSCode来配置MinGW工具,以达到配置出一个可以直接编译和调试代码的C语言开发环境。




   MinGW的安装

公众号回复“GCC“即可获取MinGW的下载链接。

使用过程很简单,只需要将我们的软件包解压,放到一个特定的位置,如图1所示。



图1 MinGW文件夹


以上的文件夹里面,bin文件夹存放了所有的GCC相关可执行文件,因此我们需要将其添加到环境变量里面。右击“计算机“->”属性”->”高级系统设置”,在弹出的窗口里面选择”高级“标签,再点击”环境变量“,如图2所示。


图2 打开环境变量


然后点击“新建“,输入刚刚MinGW的路径,记住这里需要把路径定位到bin文件夹里面,即输入” C:\MinGW64\bin\“。如图3所示。然后依次点击”确定“退出。


图3 添加环境变量


完成上述操作后,来测试一下环境变量是否添加成功。点击“开始“菜单,输入”cmd“打开”命令操作符“,输入”gcc -v“如果设置都正确,”命令操作符“会输出gcc的版本号,如图4所示。


图4 gcc安装完成


   VSCode安装

VSCode文本编辑器选用的是当下最火的开源软件,微软出品的“visual studio code”,这是一个微软出品的开源跨平台文本编辑器。下载链接:https://code.visualstudio.com/Download。这个编辑软件下载下来,下载界面如图5所示,注意下载的时候,选择“Userinstaller”,然后根据自己电脑的操作系统进行下载。下载完成之后,按照安装向导进行安装,安装路径可以自己随意指定。                   

   

图5 Visualstudio code下载界面


下载完成之后,默认在桌面上是不会出现快捷方式的,因此需要在搜索菜单里面找到“visual studio code”软件打开,如图6所示。软件的打开界面如图7所示。


图6 打开Visual studio code


图7 Visualstudio code软件界面


   配置VSCode

首先,我们先创建一个文件夹,用以存放我们的代码,假设我们需要创建的一个文件夹名称为“NumCal”,其位置就位于桌面上。然后我们直接使用VSCode来打开这个文件夹,如图8所示。


图8 VSCode打开文件夹


打开完成文件夹之后,我们就可以在里面创建.c文件并且编写一些代码了,假设我们在这里先创建一个“main.c”的源文件,然后编写几行很简单的代码,如,判断一个输入的数值大小,如果输入的数值在1~100之间就输出“Small”,如果在101~200之间就输出“Middle”,其余情况都输出“Large”,这个代码如图9所示。


图9 数字判断代码


#include<stdio.h>#include "a.h"int main(void) { int number; printf("input:\n"); scanf("%d", &number);  if((number > 1) && (number <= 100)) { printf("Small\n"); } else if((number > 101) && (number <= 200)) { printf("Middle\n"); } else { printf("Large\n"); } return 0;}




在这些操作都完成之后,我们现在先来试一下使用VSCode的调试功能,点击菜单栏的“运行”,然后再弹出的菜单里选择“启动调试”。如图10所示。


图10 启动代码调试


此时,VSCode会弹出一个选项,让你选择合适的调试器,这里我们选择“C++(GDB/LLDB)”,如图11所示。


图11 调试器选择


本想着这一次操作可以开启我们使用VSCode的新世界,但是随即而来的是一桶刺骨的冷水,因为它弹出了如图12所示的这一个让人看不懂的界面,这个界面里的内容既像代码,又不像代码,如图12所示。


图12 弹出的看不懂的东西


细心的观众会发现,这一个类似于代码的东西,它好像是被自动生成且保存至本地的“.vscode”文件夹里面的。其实如果有做前端的童鞋就知道,这个json文件其实是一种类似于XML的轻型数据文件,本广泛地用以前端和服务器之间的数据交互。但是为什么VSCode里面也会有这个东西呢?这是由于VSCode是用Electron框架开发的,Election框架的核心编程语言是Node.js,Node.js可以简单地理解成一种可以运行在操作系统本地的,脱离浏览器环境的JavaScript,所以就不难理解,为何VSCode要用json文件来存储数据了。


图13 使用Electron框架,Node.js和Chrome V8引擎技术开发的VSCode


在了解完成launch.json是什么东西之后,我们就来说一下其作用。launch.json其实顾名思义就知道,它作用是在C语言文件启动调试时提供配置参数。这些参数具体有什么作用呢?它们的作用参考图14。


图14 launch.json文件配置内容注释


现在我们可以根据图14所示的注释,对launch.json文件中的内容进行完善。完善之后的代码如图15所示。


图15 修改好的launch.json


{ // 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。 // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "name": "build and debug", // 配置名称,将会在启动配置的下拉菜单中显示 "type": "cppdbg", // 配置类型,这里只能为cppdbg "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)  "program": "${fileDirname}/${fileBasenameNoExtension}.exe", // 将要进行调试的程序的路径 "args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可  "stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false  "cwd": "${fileDirname}", // 调试程序时的工作目录,一般为${fileDirname}即代码所在目录  "environment": [], "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台  "MIMode": "gdb", "miDebuggerPath": "D:/software/mingw64/bin/gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应  "preLaunchTask": "gcc", // 这里需要添加一个参数, //调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc  "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ] } ]}



此时,我们编辑好这个文件之后,再选择点击菜单栏的“运行”,然后再弹出的菜单里选择“启动调试”。随之而来,一声悲怆的提示音,又给我们冰冷的内心吹了两三遍西北风。弹出的窗口如图16所示。


图16 弹出的错误


图16弹出的窗口,伤害性虽然不大,但是极具侮辱性极高,它使用我们每个都认识的汉字,给我们提示出了这个错误,原来是没有找到任务“gcc”啊。但问题是怎么去找gcc呢?首先先来解释,为什么会弹出这个错误,因为我们在配置launch.json文件的时候,选择了调试之前要先执行gcc任务,那么这个gcc任务到底是什么,VSCode不知道,因此提示我们需要配置。

在弹出的这个提示框上面,选择“配置任务”,随之而来会弹出一个选项,“使用模板创建task.json文件”,如图17所示。


图17 “使用模板创建task.json文件”


遇到这种情况,我们需要毫不犹豫地点下去。点下去之后,又弹出如图18所示的现象。


图18 MSBuild生成“task.json”


此时,我们直接选择第一项“MSBuild执行生成目标”。这时候,又弹出了一个json文件,这个json文件就是我们前面多次看到的那个“task.json”,此时我们又需要对这个文件再配置一次。配置文件的内容如图19所示。


图19 task.json文件

{ "version": "2.0.0", "label": "C/C++: gcc.exe build active file", "command": "gcc", "args": [ "-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe" ],
"problemMatcher": [ "$gcc" ], "group": "build", "detail": "compiler: D:\\software\\mingw64\\bin\\gcc.exe",}



至此为止,整个VSCode C语言调试已经配置完成了,接下来,我们可以返回main.c文件对其设置一些断点,设置完成之后,点击菜单栏的“运行”,然后再弹出的菜单里选择“启动调试”,就可以进入C语言调试了。如图20所示。


图20 C语言调试界面






乐创客 我们从来不培养程序猿,我们只是嵌入式技术的搬运工
评论
  •           近日受某专业机构邀请,参加了官方举办的《广东省科技创新条例》宣讲会。在与会之前,作为一名技术工作者一直认为技术的法例都是保密和侵权方面的,而潜意识中感觉法律有束缚创新工作的进行可能。通过一个上午学习新法,对广东省的科技创新有了新的认识。广东是改革的前沿阵地,是科技创新的沃土,企业是创新的主要个体。《广东省科技创新条例》是广东省为促进科技创新、推动高质量发展而制定的地方性法规,主要内容包括: 总则:明确立法目
    广州铁金刚 2025-02-28 10:14 109浏览
  • 1,微软下载免费Visual Studio Code2,安装C/C++插件,如果无法直接点击下载, 可以选择手动install from VSIX:ms-vscode.cpptools-1.23.6@win32-x64.vsix3,安装C/C++编译器MniGW (MinGW在 Windows 环境下提供类似于 Unix/Linux 环境下的开发工具,使开发者能够轻松地在 Windows 上编写和编译 C、C++ 等程序.)4,C/C++插件扩展设置中添加Include Path 5,
    黎查 2025-02-28 14:39 146浏览
  • 更多生命体征指标风靡的背后都只有一个原因:更多人将健康排在人生第一顺位!“AGEs,也就是晚期糖基化终末产物,英文名Advanced Glycation End-products,是存在于我们体内的一种代谢产物” 艾迈斯欧司朗亚太区健康监测高级市场经理王亚琴说道,“相信业内的朋友都会有关注,最近该指标的热度很高,它可以用来评估人的生活方式是否健康。”据悉,AGEs是可穿戴健康监测领域的一个“萌新”指标,近来备受关注。如果站在学术角度来理解它,那么AGEs是在非酶促条件下,蛋白质、氨基酸
    艾迈斯欧司朗 2025-02-27 14:50 415浏览
  • 2025年2月26日,广州】全球领先的AIoT服务商机智云正式发布“Gokit5 AI智能体开发板”,该产品作为行业首个全栈式AIoT开发中枢,深度融合火山引擎云原生架构、豆包多模态大模型、扣子智能体平台和机智云Aiot开发平台,首次实现智能体开发全流程工业化生产模式。通过「扣子+机智云」双引擎协同架构与API开放生态,开发者仅需半天即可完成智能体开发、测试、发布到硬件应用的全流程,标志着智能体开发进入分钟级响应时代。一、开发框架零代码部署,构建高效开发生态Gokit5 AI智能体开发板采用 “
    机智云物联网 2025-02-26 19:01 162浏览
  • 请移步 gitee 仓库 https://gitee.com/Newcapec_cn/LiteOS-M_V5.0.2-Release_STM32F103_CubeMX/blob/main/Docs/%E5%9F%BA%E4%BA%8ESTM32F103RCT6%E7%A7%BB%E6%A4%8DLiteOS-M-V5.0.2-Release.md基于STM32F103RCT6移植LiteOS-M-V5.0.2-Release下载源码kernel_liteos_m: OpenHarmon
    逮到一只程序猿 2025-02-27 08:56 202浏览
  • 振动样品磁强计是一种用于测量材料磁性的精密仪器,广泛应用于科研、工业检测等领域。然而,其测量准确度会受到多种因素的影响,下面我们将逐一分析这些因素。一、温度因素温度是影响振动样品磁强计测量准确度的重要因素之一。随着温度的变化,材料的磁性也会发生变化,从而影响测量结果的准确性。因此,在进行磁性测量时,应确保恒温环境,以减少温度波动对测量结果的影响。二、样品制备样品的制备过程同样会影响振动样品磁强计的测量准确度。样品的形状、尺寸和表面处理等因素都会对测量结果产生影响。为了确保测量准确度,应严格按照规
    锦正茂科技 2025-02-28 14:05 149浏览
  • RGB灯光无法同步?细致的动态光效设定反而成为产品客诉来源!随着科技的进步和消费者需求变化,电脑接口设备单一功能性已无法满足市场需求,因此在产品上增加「动态光效」的形式便应运而生,藉此吸引消费者目光。这种RGB灯光效果,不仅能增强电脑周边产品的视觉吸引力,还能为用户提供个性化的体验,展现独特自我风格。如今,笔记本电脑、键盘、鼠标、鼠标垫、耳机、显示器等多种电脑接口设备多数已配备动态光效。这些设备的灯光效果会随着音乐节奏、游戏情节或使用者的设置而变化。想象一个画面,当一名游戏玩家,按下电源开关,整
    百佳泰测试实验室 2025-02-27 14:15 140浏览
  • 美国加州CEC能效跟DOE能效有什么区别?CEC/DOE是什么关系?美国加州CEC能效跟DOE能效有什么区别?CEC/DOE是什么关系?‌美国加州CEC能效认证与美国DOE能效认证在多个方面存在显著差异‌。认证范围和适用地区‌CEC能效认证‌:仅适用于在加利福尼亚州销售的电器产品。CEC认证的范围包括制冷设备、房间空调、中央空调、便携式空调、加热器、热水器、游泳池加热器、卫浴配件、光源、应急灯具、交通信号模块、灯具、洗碗机、洗衣机、干衣机、烹饪器具、电机和压缩机、变压器、外置电源、消费类电子设备
    张工nx808593 2025-02-27 18:04 123浏览
  • 一、VSM的基本原理震动样品磁强计(Vibrating Sample Magnetometer,简称VSM)是一种灵敏且高效的磁性测量仪器。其基本工作原理是利用震动样品在探测线圈中引起的变化磁场来产生感应电压,这个感应电压与样品的磁矩成正比。因此,通过测量这个感应电压,我们就能够精确地确定样品的磁矩。在VSM中,被测量的样品通常被固定在一个震动头上,并以一定的频率和振幅震动。这种震动在探测线圈中引起了变化的磁通量,从而产生了一个交流电信号。这个信号的幅度和样品的磁矩有着直接的关系。因此,通过仔细
    锦正茂科技 2025-02-28 13:30 104浏览
  • Matter 协议,原名 CHIP(Connected Home over IP),是由苹果、谷歌、亚马逊和三星等科技巨头联合ZigBee联盟(现连接标准联盟CSA)共同推出的一套基于IP协议的智能家居连接标准,旨在打破智能家居设备之间的 “语言障碍”,实现真正的互联互通。然而,目标与现实之间总有落差,前期阶段的Matter 协议由于设备支持类型有限、设备生态协同滞后以及设备通信协议割裂等原因,并未能彻底消除智能家居中的“设备孤岛”现象,但随着2025年的到来,这些现象都将得到完美的解决。近期,
    华普微HOPERF 2025-02-27 10:32 227浏览
  • 在2024年的科技征程中,具身智能的发展已成为全球关注的焦点。从实验室到现实应用,这一领域正以前所未有的速度推进,改写着人类与机器的互动边界。这一年,我们见证了具身智能技术的突破与变革,它不仅落地各行各业,带来新的机遇,更在深刻影响着我们的生活方式和思维方式。随着相关技术的飞速发展,具身智能不再仅仅是一个技术概念,更像是一把神奇的钥匙。身后的众多行业,无论愿意与否,都像是被卷入一场伟大变革浪潮中的船只,注定要被这股汹涌的力量重塑航向。01为什么是具身智能?为什么在中国?最近,中国具身智能行业的进
    艾迈斯欧司朗 2025-02-28 15:45 226浏览
  • 应用趋势与客户需求,AI PC的未来展望随着人工智能(AI)技术的日益成熟,AI PC(人工智能个人电脑)逐渐成为消费者和企业工作中的重要工具。这类产品集成了最新的AI处理器,如NPU、CPU和GPU,并具备许多智能化功能,为用户带来更高效且直观的操作体验。AI PC的目标是提升工作和日常生活的效率,通过深度学习与自然语言处理等技术,实现更流畅的多任务处理、实时翻译、语音助手、图像生成等功能,满足现代用户对生产力和娱乐的双重需求。随着各行各业对数字转型需求的增长,AI PC也开始在各个领域中显示
    百佳泰测试实验室 2025-02-27 14:08 261浏览
  • 在物联网领域中,无线射频技术作为设备间通信的核心手段,已深度渗透工业自动化、智慧城市及智能家居等多元场景。然而,随着物联网设备接入规模的不断扩大,如何降低运维成本,提升通信数据的传输速度和响应时间,实现更广泛、更稳定的覆盖已成为当前亟待解决的系统性难题。SoC无线收发模块-RFM25A12在此背景下,华普微创新推出了一款高性能、远距离与高性价比的Sub-GHz无线SoC收发模块RFM25A12,旨在提升射频性能以满足行业中日益增长与复杂的设备互联需求。值得一提的是,RFM25A12还支持Wi-S
    华普微HOPERF 2025-02-28 09:06 156浏览
  •         近日,广电计量在聚焦离子束(FIB)领域编写的专业著作《聚焦离子束:失效分析》正式出版,填补了国内聚焦离子束领域实践性专业书籍的空白,为该领域的技术发展与知识传播提供了重要助力。         随着芯片技术不断发展,芯片的集成度越来越高,结构也日益复杂。这使得传统的失效分析方法面临巨大挑战。FIB技术的出现,为芯片失效分析带来了新的解决方案。它能够在纳米尺度上对芯片进行精确加工和分析。当芯
    广电计量 2025-02-28 09:15 132浏览
  • 构建巨量的驾驶场景时,测试ADAS和AD系统面临着巨大挑战,如传统的实验设计(Design of Experiments, DoE)方法难以有效覆盖识别驾驶边缘场景案例,但这些边缘案例恰恰是进一步提升自动驾驶系统性能的关键。一、传统解决方案:静态DoE标准的DoE方案旨在系统性地探索场景的参数空间,从而确保能够实现完全的测试覆盖范围。但在边缘案例,比如暴露在潜在安全风险的场景或是ADAS系统性能极限场景时,DoE方案通常会失效,让我们看一些常见的DoE方案:1、网格搜索法(Grid)实现原理:将
    康谋 2025-02-27 10:00 253浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦