VScode中配置C/C++环境
文章目录
- VScode中配置C/C++环境
- 0.VScode快捷键
- 1.下载编辑器VScode
- 2.安装VScode
- 3.下载编译器MinGW并解压
- 4.将MinGW添加至环境变量
- 5.配置VScode插件
- 6.运行代码测试
- 7.调整与优化
- 8.一些奇怪错误提醒
- 9.如果上面的方法解决不了,那么就自主导入json
0.VScode快捷键
ctrl+,
:打开用户设置ctrl+K
:显示快捷键ctrl+R
:切换工作区ctrl+Z
:自动换行ctrl+G
:转到行ctrl+P
:转到文件F5
:启动调试shift+F5
:停止调试F2
:全局重命名变量F8
:转到下一个错误或警告F12
:转到定义ALT+F12
:查看定义ctrl+K
:右侧打开Markdown预览
1.下载编辑器VScode
官网
:https://code.visualstudio.com/(点链接时按下Ctrl,不会覆盖当前页面哦-)
2.安装VScode
3.下载编译器MinGW并解压
- 官网页面:https://www.mingw-w64.org/
- 下载页面:https://sourceforge.net/projects/mingw-w64/files/
- 下载页面中选择
x86_64-win32-seh
下载
在C盘中解压文件
4.将MinGW添加至环境变量
进入mingw64下的bin文件夹,复制当前路径,Win + i唤起系统设置,输入高级系统设置并进入,点击环境变量,选择path,编辑,新建,粘贴路径,按下三个确定
5.配置VScode插件
打开VScode安装插件 Chinese 和 C/C++ ,等待安装完毕后重启VScode
切换C/C++插件至 1.8.4 版本
因最新版本不会自动生成launch.json文件,给后续优化带来不便,故退回旧版本
6.运行代码测试
新建文件夹,修改为英文名称并进入,右键通过Code打开 若在安装时未勾选相关选项,可能没有这个选项,请自行在VScode内操作打开文件夹
注意新建的文件夹名必须是英文,否则编译会出错!
新建一个文件,英文命名且扩展名为 .c
编写相关代码如下:
#include <stdio.h>
#include <stdlib.h>
int main()
{
printf("Hello World!\n");
printf("你好世界!\n");
system("pause"); // 防止运行后自动退出,需头文件stdlib.h
return 0;
}
VScode菜单栏,点击运行,启动调试,稍等程序运行,输出结果在下方终端,上方调试面板,点击最右边的 橙色方框 停止程序运行
7.调整与优化
请根据自己的需要进行优化,代码运行后 .vscode 文件夹会自动生成在你的源文件目录下.vscode 文件夹下的 task.json 和 launch.json 用来控制程序的运行和调试
将程序运行在外部控制台【推荐】
- 打开.vscode 文件夹下的 launch.json 文件,找到 “externalConsole”: false, 将 false 改为 true 并保存
解决中文乱码问题【不推荐】
- 打开.vscode 文件夹下的 task.json 文件,找到 “${fileDirname}\${fileBasenameNoExtension}.exe” 在后面加上英文 逗号 然后回车到下一行,粘贴下面文本 “-fexec-charset=GBK” 并保存
- 不同版本VScode,不一定适用,反而会出BUG!斟酌使用!
收纳生成的 exe 可执行文件【可选】
- 打开.vscode 文件夹下的 task.json 文件,找到 “${fileDirname}\${fileBasenameNoExtension}.exe”
- 修改成 “${fileDirname}\coin\${fileBasenameNoExtension}.exe” 并保存,同理,launch.json 下也有相同的字段,需要你修改
- 在源文件同目录下新建 coin 文件夹,程序运行后,可执行文件将会生成在里面(其中 coin 可修改成你喜欢的英文名字)
这样 .c 文件一多起来的时候,就不会出现 .exe 和 .c 相互穿插在目录中
8.一些奇怪错误提醒
- 若源代码文件夹含有中文路径,将会无法编译程序
- 若你的Windows用户名使用了中文,可能无法运行
9.如果上面的方法解决不了,那么就自主导入json
- 在目录下创建三个json文件,如下图
- c_cpp_properties.json
- launch.json
- tasks.json
他们放入的内容如下:
//c_cpp_properties.json
{
"configurations": [
{
"name": "windows-gcc-x64",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"__GNUC__=6",
"__cdecl=__attribute__((__cdecl__))"
],
"intelliSenseMode": "windows-gcc-x64",
"browse": {
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": "",
"path": [
"${workspaceRoot}",
"C:/mingw64/include/**",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/x86_64-w64-mingw32",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include/c++/backward",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/include-fixed",
"C:/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.1.0/../../../../x86_64-w64-mingw32/include"
]
},
"cStandard": "${default}",
"cppStandard": "${default}",
"compilerPath": "C:/mingw64/bin/gcc.exe"
}
],
"version": 4
}
这里注意mingw64的位置,请放入自己的mingw64的地址,我这里是直接放在C盘下了
{
//launch.json
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "cmd",
"preLaunchTask": "echo",
"args": [
"/C",
"${fileDirname}\\${fileBasenameNoExtension}.exe",
"&",
"echo.",
"&",
"pause"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true
},
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "D:\\Tools\\mingw64\\bin\\gdb.exe",
"preLaunchTask": "echo",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "C/C++ Runner: Debug Session",
"type": "cppdbg",
"request": "launch",
"args": [],
"stopAtEntry": false,
"externalConsole": true,
"cwd": "c:/Users/Administrator/OneDrive/桌面/Code",
"program": "c:/Users/Administrator/OneDrive/桌面/Code/build/Debug/outDebug",
"MIMode": "gdb",
"miDebuggerPath": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
//tasks.json
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "gcc",
"args": [
"-g",
"${file}",
"-o",
"${fileBasenameNoExtension}.exe",
"-fexec-charset=GBK"//解决中文乱码
]
}
],
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "shared",
"showReuseMessage": true,
"clear": false
}
}