2024 - 10 - 10 - 笔记 - 24
作者(Author):郑龙浩(仟濹)
该笔记写于 2024-07-02
摘抄到博客上的时间是 2024-10-10
我是看了下方链接的视频后为了方便后期复习做的笔记:
B站某UP主的视频如下:
VScode配置C/C++开发环境,安装/环境配置/编译/调试/汉化/编码问题_哔哩哔哩_bilibili[VScode配置C/C++开发环境,安装/环境配置/编译/调试/汉
https://www.bilibili.com/video/BV1UK411C7xi/?spm_id_from=333.999.0.0&vd_source=2683707f584c21c57616cc6ce8454e2b
是编辑器,不是编译器,是一款跨平台的、免费的且开源的现代轻量代码编辑器,支持几乎主流开发语言的语法高亮、只能代码补全、自定义快捷键、括号匹配和颜色区分、代码片段提示、代码对比特性,也拥有对 git 的开箱即用的支持,同时,它还支持插件扩展,通过丰富的插件,用户能获得更多高效的功能。
两个版本【稳定版】and【体验版本】
推荐下载【稳定版】
https://code.visualstudio.com/Download
Ctrl + Shift +F,搜索”Chinese“
单击“简体中文“的“Install”
出现提示(右下角),In order to use VS Code in Chinese Simplified, VS Code needs to restart.
单击 “Restart”(重启)
另一个选项“Don’t Restart”,这个选项不选
VSCode 安装好之后,我们还是要知道,VSCode毕竟是一个高级的编辑器,只能用来写C/C++代码,不能直接编译代码。所以,如果我们要能使用VSCode搭建C/C++的编译和调试环境,还必须有编译器使用。为了方便,我们就使用 MinGW-w64,MinGw-w64 移植到windows平台的一个gcc编译器,使用起来也是非常方便的。下面我们就演示怎么下载和配置 MinGW-w64。
下载地址:https://sourceforge.net/projects/mingw-w64/files/
进入该网站,不要直接点下载,往下面翻一翻
找到x86_64-win32-seh
,单击之后,进入新的界面,会自动下载
等待压缩包下载完成以后,解压该软件,会出现一个名为mingw64
的文件夹
将该文件夹拷贝至C盘 / 盘的跟目录中
尽量将该文件夹放在C/D跟目录下,这样子做路径非常的短,方便寻找,还有就是不要使用中文命名,否则使用起来会出错误
bin文件夹里面就是可执行工具了
要在Path中增加一个mingGW64的中的文件变量
将bin目录添加到环境中
将bin的路径复制eg:C:\mingw64\bin
win + S, 会弹出搜索栏,输入“环境变量”
在“系统属性”对话框中单击“环境变量”
在“环境变量”对话框中,双击“系统变量”中的“Path”
在下面空白位置双击 / 单击 “新建” 按钮,粘贴路径将C:\mingw64\bin
单击 “确定”,再次单击 “确定”
单击 “确定”
这样的话像bin
文件夹中的这种g++/gcc/java/javac
这中编译器、编辑器就可以通过命令行的方式去使用了
在搜索栏输入cmd
输入where gcc
C:\mingw64\bin\gcc.exe
如果出现 3,那就证明MinGW64
这个路径已经配置好了
C/C++
,单击“安装”如何理解文件中的部分设置的内容,第第七步中会给出答案
在某文件夹内创建.c文件,编写.C文件即可进行测试
先写一个.c代码,为了下一步方便进入.c文件进行更改
进入.c源文件内部,按Ctrl + Shift + P
快捷键
在软件的上方 会弹出一个搜索框,单击 / 搜索 >C / C++:编辑配置(UI)
进入一个新的界面,配置 “编译器路径”,找到 “编译器路径”
选择“C:/mingw64/bin/gcc.exe” 路径
注:这个文件路径就是我之前配置环境变量的文件路径下的gcc.exe,这是一个工具
每个人下载的mingw64的路径可能都不一样,要看清楚自己的mingwg的文件路径在哪,并且要将这个文件夹下的bin文件夹配置到环境变量中去,千万要注意,要看看自己的文件夹在什么位置
选择 “gcc-64(legacy)”
此时 左侧 “资源管理器” 中会出现文件夹.vscode
,里面有一文件 c_cpp_properties.json
单击该文件,可以在源文件中看到
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.22621.0",//指Windows SDK
"compilerPath": "C:/mingw64/bin/gcc.exe",?//指定了编译器是什么样子的
"cStandard": "c17",//C编译的标准是什么
"cppStandard": "c++17",//C++ 编译的标准是什么
"intelliSenseMode": "gcc-x64"//代码提示的格式是什么
}
],
"version": 4
}
进入 VScode主界面,单击 “终端” 菜单,在弹出的快捷菜单中单击 “配置任务” 按钮
在上方搜索位置单击 / 搜索并单击 C/C++: gcc.exe 生成活动文件
在左侧 “资源管理器” 中的 “.vscode” 中出现了一个 tasks.json
这个文件是专门是用来执行代码的编译任务的。
{//注释是自己写的,为了能看懂
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",
"command": "C:/mingw64/bin/gcc.exe",//这里是指定编译器(不是自带的)
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",//指定被编译的文件是哪一个(不是自带的),就是说,编译的时候,要编译的文件是什么名字【file意思就是文件】
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"//指定生成的可执行文件的路径,就是编译以后,生成的可执行文件存放到哪个路径,【file意思就是文件】
],
"options": {
"cwd": "C:/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
看的下方链接的视频:
8.VSCode编译和执行C程序_哔哩哔哩_bilibili
https://www.bilibili.com/video/BV1UK411C7xi/?p=8&spm_id_from=pageDriver&vd_source=2683707f584c21c57616cc6ce8454e2b
如果开着刚才的tasks.json文件,则关闭
进入 .c 文件。输入代码
单击 “终端” –> “运行生成任务”(有的是执行)Ctrl + Shift + B
会在下方 “终端” 打印出来 “生成已成功完成”,并且在左侧 file.c 下面生成 file.exe 文件
运行:
按 Ctrl +
` 快捷键,打开VScode 自带的终端(一般是开着的),就可以运行代码了。
要在终端处单击一下,然后按任意键在终端中会出现存放着.c文件的路径,在后面写.\file.exe
之类的,总之就是定位到要执行的执行文件的路径,然后单击回车
PS D:\code\Gitee\practice> .\C语言\二分查找.exe
显示运行结果
总之就是先配置任务,再运行生成任务
其实重新添加也可以,直接将上次的文件夹中的.vscode复制到本文件夹也可以,都是可以用的
改造tasks.json并构建验证结果
要能够编译一个文件中的多个文件,需要定制tasks.json文件的内容
编译多个源代码文件:
${file}
“修改为”${wgrkspaceFolder}\\*.c
",可以构建当前工作区中的所有C文件。${file}
“修改为”${workspaceFolder}\*.cpp
",可以构建当前工作区中的所有C++文件修改编译输出的文件名:
${fileDirname}\\${fileBasenameNoExtension}.exe
",修改为:"${workspaceFolder}\\myProgram.exe
"可以把编译输出的文件名硬编码为myProgram.exe
,而不是与C文件同名。${fileDirname}\\${fileBasenameNoExtension}.exe
",修改为:“${workspaceFolder}\\${workspaceRootFolderName} .exe
”,可以把编译输出的文件名为:打开的工作区文件夹名字.exe
。可以对比一下, 和上看的不太一样
{//注释是自己写的,为了能看懂
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",
"command": "C:/mingw64/bin/gcc.exe",//这里是指定编译器(不是自带的)
"args": [
"-fdiagnostics-color=always",
"-g",
"${wgrkspaceFolder}\\*.c",//指定被编译的文件是哪一个(不是自带的),就是说,编译的时候,要编译的文件是什么名字 这里的\*.c “*”值得是全部的意思,这里的意思就是执行所有的.c文件
"-o",
"${workspaceFolder}\\myProgram.exe"//指定生成的可执行文件的路径,就是编译以后,生成的可执行文件存放到哪个路径,【file意思就是文件】 让输出的文件的名字和文件夹的名字相同
],
"options": {
"cwd": "C:/mingw64/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}
c_cpp_properties.json
一样吗?不太一样
Ctrl + Shift + P,在上方出现的搜索栏中输入/单击 “C/C++配置编辑(UI)”
在新界面当中,找到 “配置名称” 可以不更改上面设置的C的配置“win32”,可以直接单击 “添加配置” 直接添加一个新的配置
直接输入C++
同样的,选择 < 编译器文件路径 > 为 “C:mingw64/bin/g++.exe”
选择提示C++代码提示的工具
在 IntelliSense
模式中选择 “gcc-64(legacy)
”
C 标准和 C++标准选择c17Orc++17即可
此时,c_cpp_properties.json
中就会生成 更改后的新的编译选项
c_cpp_properties.json
:
会发现下面有两个name
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.22621.0",
"compilerPath": "C:/mingw64/bin/gcc.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64"
},
{
"name": "C++",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.22621.0",
"compilerPath": "C:/mingw64/bin/g++.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64",
"compilerArgs": [],
"mergeConfigurations": false,
"browse": {
"path": [
"${workspaceFolder}/**"
],
"limitSymbolsToIncludedHeaders": true
}
}
],
"version": 4
}
由于之前launch.json
有了生成.exe文件所需要的编译文件,即gcc,如果想让c++文件编译,就需要重新配置任务。从而改变lauch.json
将.VScode复制到存放.cpp文件的文件夹中
创建或者在本文件夹中打开一个.cpp文件,记住,一定要选中或进入某个.cpp文件,否则第4步不会出现想点的按钮
单击右下角的win32/C++的地方,即可更改配置,这显示的就是之前我们设置的C/C++配置名称
或 单击 “终端” –> “配置任务”
单击上方搜索栏中的 “C/C++:g++.exe 生成活动文件 (换行)编译器: C:\mingw64\bin\g++.exe
”
单击 “终端” – > “运行生成任务”,在顶部会出现选择要运行的生成任务,继续选择 “C/C++:g++.exe 生成活动文件 (换行)编译: C:\mingw64\bin\g++.exe
”,即可运行
VScode的调试的关键是依赖一个配置文件 “launch.json
”
bin文件中的“gdb.exe” 就是调试需要的工具
launch.json
解析:
中的 "program":
指的是调试谁,“miDebuggerPath”: 指的是被谁调试
进入VScode主界面,最左侧几个按钮中的 “运行和调试
”,也可以按Ctrl + Shift + D
单击 “创建lauch.json文件”(蓝色字体)
上方出现文本框,单击 “C++(GDB/LLDB)”。(然后默认在.vscode文件夹下面出现一个launch.json文件)
launch.json:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "输入程序名称,例如 ${workspaceFolder}/a.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/path/to/gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "输入程序名称,例如 ${workspaceFolder}/a.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/path/to/gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "输入程序名称,例如 ${workspaceFolder}/a.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/path/to/gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
进入launch.json
文件,在现实代码的右下方位置会有一个 “添加配置” 按钮,单击“添加配置”按钮
在代码区域会出现一个快捷菜单,而在其中可以勾选多个选项,勾选 “C/C++: (gdb)启动
” 【这样就增加了一个对GDB的调试】
将 tasks.json
文件中的 “${fileDirname}\\${fileBasenameNoExtension}.exe
”【如果之前配置的是编译整个文件夹,就是这个】或“${workspaceFolder}\\${workspaceRootFolderName} .exe
”【如果之前配置的是编译某个文件,就是这个】 复制,拷贝到 launch.json
文件中的 "program":
后“输入程序名称,例如${workspaceFolder}/a.exe
”,将其覆盖
意思就是,tasks.json中的"-o"下面的内容
(就是编译生成的可执行程序)我所说的可执行程序就是"${fileDirname}\\${fileBasenameNoExtension}.exe"
或"${workspaceFolder}\\${workspaceRootFolderName} .exe"
,是生成的.exe文件,而 launch.json 中 program:
指的是调试的.exe文件,所以需要改成tasks.json中的需要
更改调试工具:
将 "miDebuggerPath": "/path/to/gdb"
, 改为 gdb.exe
的文件路径
"miDebuggerPath": "C:\\mingw64\bin\\gdb.exe",
此时就已经配置好了
一般出了这种问题,都是和文件编码有些关系
文件的文件编码不支持中文,或者 文件的文件编码和终端的文件编码不一致才会导致这种情况的出现
从该博主发的博客中学习到了该方法:
vscode生成的exe文件出现中文乱码的问题_vc code打包得exe中文运行乱码-CSDN博客
https://blog.csdn.net/weixin_46374277/article/details/124275252
头文件处添加:
#include
main函数中加入语句:
SetConsoleOutputCP(65001);
从这位博主发的博客中学习到的此方法:
vscode中文乱码问题_vs code中文乱码-CSDN博客
https://blog.csdn.net/qq_35629971/article/details/129175282?ops_request_misc=&request_id=&biz_id=102&utm_term=永久解决VScode.exe乱码的问题&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-129175282.142v100control&spm=1018.2226.3001.4449
UTF - 8 的文件编码为 65001
这种方法可以暂时解决,但是每次都要在控制台或者终端出入chcp 65001
在 “终端” 中输入 chcp 可以查询默认编码
从这位博主发的博客中学习到了如何解决该问题:
如何修改cmd控制台默认编码为utf-8,正确显示汉字_cmd默认编码-CSDN博客
https://blog.csdn.net/lyyybz/article/details/120782669?ops_request_misc=&request_id=&biz_id=102&utm_term=永久性更改控制台的字符编码&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-0-120782669.142v100control&spm=1018.2226.3001.4187
这样操作后,每次进入控制台,都会在开头执行一次
chcp 65001
Active code page: 65001
C:\Users\26831>