写在前面
- 小白入门需准备至少30min的配置时间
- 刚配置好的环境,只要运行,都会出现“终端将被任务重用,按任意键关闭。”,be cool,放心~
- 刚配置好的环境,运行之后,都是输出还没有看见,terminal就自己关了,这不是你的错~be cool(后面有解决方法)
主体框架
MinGW的安装
- 此处搬运工Visual Studio Code (vscode) 配置C、C++环境/编译并运行
- MinGW的安装,json文件的创建可以参考此文章
但必须说明:因VScode更新,task.json已不支持旧版本"version": “0.1.0”,文章中三个json文件必须被替换
Json文件新时代新版本
//task.json
{
"version": "2.0.0",
"command": "g++",
"args": ["-g","${file}","-o","${file}.exe"], // 编译命令参数
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
- 注:“compilerPath”: 写上你自己的MInGW的路径
c_cpp_properties.json
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "8.1",
"compilerPath": "D:\\MinGW\\bin\\gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "msvc-x64"
}
],
"version": 4
}
- 注:“miDebuggerPath”: 写上你自己的MInGW的路径
//launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "C++ Launch (GDB)", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加) // 调试器启动类型,这里只能为Local
"targetArchitecture": "x86", // 生成目标架构,一般为x86或x64,可以为x86, arm, arm64, mips, x64, amd64, x86_64
"program": "${file}.exe", // 将要进行调试的程序的路径
"miDebuggerPath":"D:\\MinGW\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应
"args": ["blackkitty", "1221", "# #"], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceRoot}", // 调试程序时的工作目录,一般为${workspaceRoot}即代码所在目录
"externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"preLaunchTask": "g++" // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
}
]
}
可选功能,按F5之后terminal怎么不”闪退“
-
解决问题:运行之后,都是输出还没得及看见,terminal就自己关了,此部分参考 使用VS Code进行C语言学习
-
在”.vscode”文件夹下新建head.h头文件,并填下以下代码。
#include <stdlib.h>
static void before(void) __attribute__((constructor));
static void after(void) __attribute__((destructor));
static void middle(void);
static void before()
{
system("chcp 65001"); //切换字符集,顺便解决了中文乱码问题
system("cls");
}
static void after()
{
system("echo.");
system("pause");
}
- 修改tasks.json,用以下内容替换。
“args”: ["-g"," f i l e " , " − i n c l u d e " , " {file}","-include"," file","−include","{workspaceRoot}\.vscode\head.h","-o","${file}.exe"], //修改的是这一行,添加了-include命令,预编译头文件
{
"version": "2.0.0",
"command": "g++",
// "args": ["-g","${file}","-o","${file}.exe"], // 编译命令参数
"args": ["-g","${file}","-include","${workspaceRoot}\\.vscode\\head.h","-o","${file}.exe"], //修改的是这一行,添加了-include命令,预编译头文件
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}