1. 安装VSCode与设置MinGW环境变量
安装VSCode与安装VSCode插件,以及设置MinGW环境变量这里不作指导说明,略过。
1.1 安装VSCode
建议安装System版本
的🔗VSCode(因为这个版本可以实时在线提示同步官方的更新)。
1.2 安装MinGW二进制集合
GitHub的离线安装二进制发行版:🔗MinGW_v14.2.0,选择下载名为 x86_64-14.2.0-release-win32-seh-ucrt-rt_v12-rev0.7z
的压缩包。
GitHub的在线安装版:🔗mingwInstaller.exe,安装时的配置选择和上述二进制发行版保持一致即可。
笔者的CSDN资源:🔗https://download.csdn.net/download/ZZLLLLLLZ/89709135?spm=1001.2014.3001.5503
⭐⭐⭐INFO:
- x86_64表示64bit-cpu架构,i686是32bit-cpu架构的衍生系列,从属于32bit架构;
- release表示为正式发行版;
- posix 或 win32指的是线程模型。posix,是 UNIX 系统的 API 设计标准,很多类 UNIX 系统也在支持兼容这个标准,如 Linux 操作系统。如果在 Windows 下开发 Linux 应用程序,则选择 posix;win32,是 Windows 系统的 API 设计标准,如果开发 Windows 平台下的应用程序,就需要选择 win32;
- seh版本较新只支持64bit,dwarf版本较新只支持32bit,还有个sjlj版本较旧,同时支持32bit和64bit;
- ucrt兼容C99标准,而msvcrt比较古老,不兼容C99标准。
大家记得设置环境变量,快捷键win+R打开cmd,输入gcc -v确认是否已安装成功。
2. VSCode—“文房四宝”
下面4个文件几乎都是开箱即用,只需要修改少许内容,你可以用于替换掉自己工程下的.vscode文件夹中的4个文件。适用于工程含有单个.c文件或多个.c文件的情况,需要修改的地方笔者会加以说明。
2.1 settings.json
⭐⭐⭐NOTE:无需修改,在扩展商店中下载One Dark Modern插件和Dracula插件即可。
{
// 字符集编码格式
"files.encoding": "utf8",
// 设置“严格提醒” = enabled/disabled/enabledIfIncludesResolve
// "C_Cpp.errorSquiggles": "disabled",
// 启用文件自动保存
"files.autoSave": "afterDelay",
// 项目各文件的图标主题
"workbench.iconTheme": "office-material-icon-theme",
// 吸血鬼主题
"workbench.colorTheme": "Dracula Theme",
//粘贴时格式化代码
"editor.formatOnPaste": true,
//保存时格式化代码
"editor.formatOnSave": true,
//设置字体的大小,最小值能设置为6
"editor.fontSize": 17,
//设置字体的粗细
"editor.fontWeight": "500",
//设置字体的样式
// "terminal.integrated.fontFamily":"Courier New",
//使用Ctrl+滚轮缩放编辑区的字体大小
"editor.mouseWheelZoom": true,
//使用Ctrl+滚轮缩放终端Terminal的字体大小
"terminal.integrated.mouseWheelZoom": true,
//设置为false,这样打开新的文件时,不会自动关闭旧的文件
"workbench.editor.enablePreview": false,
/****************************************/
"files.associations": {
"stdio.h": "c"
}
}
2.2 c_cpp_properties.json
⭐⭐⭐NOTE:只需要修改"compilerPath"处,后面改成你安装的MinGW集合的gcc.exe位置。
{
"configurations": [
{
"name": "Win32-C/C++",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "E:/mingw64/bin/gcc.exe",
"cStandard": "c17",
"cppStandard": "gnu++14",
"intelliSenseMode": "gcc-x64"
}
],
"version": 4
}
2.3 task.json
⭐⭐⭐NOTE:只需要修改"command"处,后面改成你安装的MinGW集合的gcc.exe位置。
{
//task.json控制构建环节(其实理论上可以控制任何过程),相当于make工具 + makefile
"tasks": [
{
//构建build任务
"type": "cppbuild",
"label": "build_task",
"command": "E:\\mingw64\\bin\\gcc.exe",
"args": [
"-fdiagnostics-color=always",
"-g", //生成和调试有关的信息
"-Wall", // 开启额外警告
// "${file}",//(单文件编译)
// "*.c",//(多文件编译第1种)
"${fileDirname}\\*.c", //(多文件编译第2种)
"-o", //指定生成可执行文件的名称
"${fileDirname}\\${fileBasenameNoExtension}.exe" //生成 单文件名称.exe
// "${fileDirname}\\execute.exe" //生成 自定义名字.exe
// "${workspaceFolder}\\${workspaceRootFolderName}.exe", //生成 工程名称.exe
],
"options": {
"cwd": "${fileDirname}"
},
"problemMatcher": [
"$gcc" //捕捉编译时编译器在终端里显示的报错信息,将其显示在vscode的‘问题’面板里
],
"group": {
//把该任务放在build组
"kind": "build",
"isDefault": true
},
"presentation": {
"echo": true,
"reveal": "silent", //隐藏编译任务界面,显示“执行调试命令的过程”和“程序的运行结果”
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
2.4 launch.json
⭐⭐⭐NOTE:只需要修改"miDebuggerPath"处,后面改成你安装的MinGW集合的gdb.exe位置。
{
//launch.json控制运行和调试环节,相当于openocd工具
"configurations": [
{
"name": "C/C++ Debug",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe", //生成 单文件名称.exe
// "program": "${fileDirname}\\execute.exe",//生成 自定义名字.exe
// "program": "${workspaceFolder}\\${workspaceRootFolderName}.exe", //生成 工程名称.exe。与task.json中的exe路径对应
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}", // 调试程序时的工作目录,此处为源码文件所在目录
"environment": [],
"externalConsole": false, //true使用cmd终端,false使用vscode内部终端
"MIMode": "gdb",
"miDebuggerPath": "E:\\mingw64\\bin\\gdb.exe", //指定调试器所在路径,如果你的minGW装在别的地方,则要改成你自己的路径,注意间隔是\\
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "build_task" //tasks.json中的label对应。launch.json的preLaunchTask字段和tasks.json的lable字段值需保持一致
}
],
"version": "2.0.0"
}
3. 建立c工程
3.1 工程目录
3.2 编写c代码demo
#include <stdio.h>
#include <stdlib.h>
typedef enum STA
{
MON = 1,
TUE,
WED,
THU,
FRI,
SAT,
SUN
} StaNewType; // StaNewType = enum STA
int main(void)
{
printf("start.");
unsigned char key_state = 0;
switch (key_state)
{
case MON /* constant-expression */:
printf("This is 1#\n");
/* code */
break;
case TUE /* constant-expression */:
printf("This is 2#\n");
/* code */
break;
case WED /* constant-expression */:
printf("This is 3#\n");
/* code */
break;
case THU /* constant-expression */:
printf("This is 4#\n");
/* code */
break;
case FRI /* constant-expression */:
printf("This is 5#\n");
/* code */
break;
case SAT /* constant-expression */:
printf("This is 6#\n");
/* code */
break;
case SUN /* constant-expression */:
printf("This is 7#\n");
/* code */
break;
default:
printf("⭐⭐------------------------illegal!------------------------⭐⭐");
break;
}
return 0;
}
3.3 运行代码
点击右上角运行按钮或快捷键ctrl+alt+N,编译并执行code,得到如下结果:
3.4 调试代码
鼠标点击VSCode左侧的小虫子,再点击“运行和调试”的绿色小三角按钮
正常调试中………………
4. 可能出现的问题解决方法
4.1 Run运行代码只有按钮,没有对应的快捷键
1)设置—>键盘快捷方式
2)在弹出的搜索框中输入C/C++: 运行 C/C++ 文件,点击键绑定,设置偏爱的快捷键(我这里已经设置好了)