C语言基础系列【3】VSCode使用

embedded/2025/2/6 17:40:16/

前面我们提到过VSCode有多么的好用,本文主要介绍如何使用VSCode编译运行C语言代码。

安装

首先去官网(https://code.visualstudio.com/)下载安装包,点击Download for Windows

获取安装包后,一路点击Next就可以。

配置VSCode

相关的配置详见:https://code.visualstudio.com/docs/cpp/config-msvc (直接看官方文档即可)

也可以参考这个文档:https://blog.csdn.net/lyb06/article/details/133305751

主要步骤如下

安装扩展

安装好VSCode后,打开后,搜索C/C++的扩展,然后安装:

安装MinGW-w64

通过 MSYS2 获取最新版本的 MinGW-w64,它提供了 GCC、MinGW-w64 以及其他有用工具和库的最新原生构建版本。为你提供编译代码、调试代码以及配置 IntelliSense 所需的工具。

要安装 MinGW-w64 工具链,可按照以下步骤操作:

  1. 你可以从 MSYS2 页面下载最新安装程序,或使用此直接链接下载安装程序。
  2. 运行安装程序并按照安装向导的步骤进行操作。请注意,MSYS2 需要 64 位 Windows 8.1 或更高版本。
  3. 在向导中,选择你希望的安装文件夹。记录下此目录,以备后续使用。最好直接使用推荐目录。完成后,确保选中“运行 MSYS2”,然后点击“完成”。这将为你打开一个 MSYS2 终端窗口。
  4. 在此终端中,通过运行以下命令安装 MinGW-w64 工具链:
pacman -S --needed base-devel mingw-w64-ucrt-x86_64-toolchain
  1. 按下回车键接受 toolchain 组中的默认软件包数量。

  1. 当提示是否继续安装时,输入 Y
  2. 将 MinGW-w64 的 bin 文件夹路径添加到 Windows 的 PATH 环境变量中,具体步骤如下:
    1. 在 Windows 搜索栏中输入“设置”,打开 Windows 设置。
    2. 搜索“编辑账户的环境变量”。
    3. 在“用户变量”中,选择 Path 变量,然后点击“编辑”。
    4. 点击“新建”,并添加你在安装过程中记录的 MinGW-w64 目标文件夹路径。如果你使用了上述默认设置,则路径为:C:\msys64\ucrt64\bin
    5. 点击“确定”,然后在“环境变量”窗口中再次点击“确定”,以更新 PATH 环境变量。 请注意,你需要重新打开任何控制台窗口,以便更新后的 PATH 环境变量生效。

检查MinGW是否已安装

要检查 MinGW-w64 工具是否正确安装并可用,请打开一个新的命令提示符窗口并输入以下命令:

gcc --version
g++ --version
gdb --version

你应该会看到显示已安装的 GCC、g++ 和 GDB 版本的输出信息。如果情况并非如此:

  1. 确保你的 PATH 变量条目与工具链安装位置的 MinGW-w64 二进制文件位置匹配。如果编译器在该 PATH 条目中不存在,请确保你按照前面的指示进行了操作。
  2. 如果 gcc 的输出正确,但 gdb 不正确,则你需要从 MinGW-w64 工具集中安装你缺少的软件包。
    1. 如果在编译时出现“The value of miDebuggerPath is invalid”的消息,其中一个原因是缺少 mingw-w64-gdb 软件包。

创建程序

创建项目

可以直接用VSCode打开某个文件夹,该文件夹将成为你的“工作区”。在弹出的工作区信任对话框中,选择“是,我信任作者”,因为这是你创建的文件夹。

然后你将在工作区的 .vscode 文件夹中看到三个文件:

  • tasks.json(构建指令)
{"tasks": [{"type": "cppbuild","label": "C/C++: g++.exe build active file","command": "C:\\msys64\\ucrt64\\bin\\g++.exe","args": ["-fdiagnostics-color=always","-g","${file}","-o","${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "Task generated by Debugger."}],"version": "2.0.0"
}
  • 详情:
    • command 设置指定了要运行的程序;在本例中,它是 g++
    • args 数组指定了传递给 g++ 的命令行参数。这些参数按照编译器期望的特定顺序列在该文件中。
    • 此任务告诉 g++ 使用活动文件(${file}),将其编译,并在当前目录(${fileDirname})中创建一个输出文件(-o 参数),文件名与活动文件相同,但带有 .exe 扩展名(${fileBasenameNoExtension}.exe)。对我们来说,这将生成 helloworld.exe
    • label 的值是你在任务列表中看到的内容;你可以随意命名它。
    • detail 的值是你在任务列表中看到的任务描述。强烈建议你更改此值,以便将其与其他类似任务区分开来。
    • problemMatcher 的值用于选择用于在编译器输出中查找错误和警告的输出解析器。
  • launch.json(调试器设置)
{"version": "0.2.0","configurations": [{"name": "g++.exe - Build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe build active file"}]
}

新建文件

点击新建文件按钮,新建个test.c文件:

编写代码

test.c文件中,编写简单的Hello World代码:

运行

直接点击图中按钮,运行即可:

你会看到有Hello,World的输出,然后你也会看到同级目录中出现了test.exe的可执行文件,这个可执行文件我们也可以直接运行,也会有同样的输出。

作者介绍

程序喵大人

  • 35- 资深C/C++/Rust/Android/iOS客户端开发
  • 10年大厂工作经验
  • 嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手
  • 《C++20高级编程》《C++23高级编程》等多本书籍著译者

C++训练营

专为校招、社招3年工作经验的同学打造的1V1 C++训练营,量身定制学习计划、每日代码review,简历优化,面试辅导,一条龙服务,已帮助多名学员获得offer!训练营介绍


http://www.ppmy.cn/embedded/160093.html

相关文章

FFmpeg 头文件完美翻译之 libavdevice 模块

前言 众所周知,FFmpeg 的代码开发上手难度较高,源于官方提供的文档很少有包含代码教程相关的。要想熟练掌握 FFmpeg 的代码库开发,需要借助它的头文件,FFmpeg 把很多代码库教程都写在头文件里面。因此,熟读头文件的内…

6S模型的编译问题解决

使用python处理遥感光谱数据,免不了进行大气校正,基本上免费的就是使用Py6s,而py6s库只是一个接口,还需要自己配置6S模型,可以查到很多资料,6S模型是古老的fortran语言写的,基本配置流程就是安装…

基于python热门歌曲采集分析系统

基于Python的热门歌曲采集分析系统是一个综合性的音乐数据处理平台,它利用Python的强大功能,结合数据库和前端技术,实现了对热门歌曲的采集、分析、展示和管理。以下是对该系统的详细介绍: 一、系统架构与技术栈 1.后端&#xf…

Python爬虫:1药城店铺爬虫(完整代码)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

【Vue3 完整学习笔记 - 第一部分】

Vue3 完整学习笔记 - 第一部分 Vue3 完整学习笔记 - 第一部分1. Vue3 基础入门1.1 Vue3 简介1.2 创建 Vue3 工程1.3 编写首个 Vue3 组件1.4 Composition API vs Options API1.5 setup 函数详解1.6 响应式数据处理 Vue3 完整学习笔记 - 第一部分 1. Vue3 基础入门 1.1 Vue3 简…

RGB565转BITMAP[C#---2]

这是楼主在开发C#上位机的时候遇到的另一个问题,怎么把RGB565转为BITMAP,在CSDN上搜索,要么是安卓平台的,要么是2011年的古早代码(还没排版),还是靠自己和DEEPSEEK的智慧解决了(●’◡’●) 当然…

【PyQt】keyPressEvent键盘按压事件无响应

问题描述 通过load ui 文件加载程序时,keyPressEvent键盘按压事件无响应 原因 主要是由于事件处理的方式和窗口的显示方式不正确所导致的。 解决代码 self:这里的self作为loadUi函数的第二个参数,意味着加载的界面将被设置为当前类实例&…

基于YOLO11的肺结节检测系统

基于YOLO11的肺结节检测系统 (价格90) LUNA16数据集 数据一共 1186张 按照8:1:1随机划分训练集(948张)、验证集(118张)与测试集(120张) 包含 nodule 肺结节 1种…