关于VSCode的C/C++环境的一些常见问题(Windows)
VSCode作为一个现代化编辑器,拓展数不胜数,吸引了大量用户。
本文将会介绍如何配置VSCode的C/C++环境和一些常见的问题(这些都是我遇到过的)。
VSCode的下载很简单,不过这里还是放一个链接: Visual Studio Code 下载,点中间的Download…就可以了。
1. 如何配置一个基本的C/C++环境?
1.1 首先,你需要找到这两个拓展(VSCode首页->左侧栏->几个小方块的图标,搜索C/C++):

这个拓展包含了基本的C/C++开发功能。

这个拓展是用来运行代码的。
1.2 然后,你需要一个编译器
编译器就是负责将代码转换为机器码的程序,常见的编译器有 GCC , LLVM Clang , MSVC 等。
如果你需要用一些非标准库内的语句,诸如#include <bits/stdc++.h> 、__int128_t,请选择下载 GCC ,这是最常用的编译器,而且这些语句在其他编译器中是不支持的。
如果你想要更快的编译速度和更全面的代码解析,你可以选择 LLVM Clang 。
以上的两个资源都是来自 Github 的,在Assets下选择适合你系统的**.zip文件**(其中i686是x32架构)
如果你已经下载了 DEV-C++ ,你也可以使用它的编译器(一般位于C:\Program Files (x86)\Dev-Cpp\MinGW64\bin\,其中C:\Program Files (x86)\Dev-Cpp\是你的 DEV-C++ 安装目录),这个办法后边会说
下载完以后,建议把它加载到Path路径中,这样会更方便。
添加Path路径可以看这篇文章:windows10设置环境变量Path详细步骤 ,添加的项是你的编译器的文件夹路径,即...\bin\。需要重启之后才会生效。
(上文提到的编译器路径就是你把下载的zip解压的文件夹中,搜索g++.exe,它就是编译器,它的完整路径就是编译器路径)
问题 1.2.1 无法访问Github
解决方法:
- 更换网络(如移动热点、VPN)
- 使用 Steam++(现更名为Watt Toolkit)
问题 1.2.2 下载速度慢
这个没什么解决方案,顶多就是挂个迅雷之类的,毕竟Github是国外网站,再快也快不到哪去,等个十几分钟也就下完了。
1.3 接下来,你需要编辑一下配置
1.3.1 C/C++ IntelliSense 配置(即自动补全)
下载完成后,按下 Ctrl + Shift + P ,输入 C/C++: Configurations (UI),回车 ,大概长这样(背景是我自己换的)。

- 配置名称: VSCode会自动设置
- 编译器路径:前面提到的,根据你自己的编译器路径添
- IntelliSence 模式:一般与配置名称一样,你也可以自己设置
- C/C++ 标准:根据自己的需求选择
- 没有提的就是不太重要的,以上这些都不会影响实际编译,只是视觉效果
在编辑完成后,你的工作区目录下的.vscode文件夹中应该会多一个叫做c_cpp_properties.json的文件,它存储了刚才编辑的配置。
1.3.2 C/C++ Compile Run
点击上面菜单栏中的文件 → 首选项 → 设置 → 输入 @ext:danielpinto8zz6.c-cpp-compile-run

- C-Compiler: C语言编译器路径,如果你已经添加了Path,那你可以直接写
gcc,或是其他;否则,写完整路径 - C-flags: C语言编译参数
- C linker flags: C链接器参数,不用填,除非你想用C编译器编译C++
- Cpp-Compiler: C++编译器路径,如果你已经添加了Path,那你可以直接写
g++,或是其他;否则,写完整路径 - C-flags: C++编译参数
- C linker flags: C++链接器参数
- Output location: 输出可执行文件的文件夹,默认是output(比如:
E:\a.cpp编译完的可执行文件.exe在E:\output\a.exe) - 其他的就按默认设置就可以了,加粗的是重要的,请务必确认编译器路径填写无误,否则可能无法编译。
问题 1.3.2.1 为什么其他的教程都会创建launch.json和tasks.json?
这两个文件是用来 Debug 的,并不是必须的文件。这两个文件的配置更加复杂,下文会详细地说。
1.4 大功告成!
现在,你已经配置好了一个基本的 C/C++ 环境,点击右上角的箭头就可以编译运行了!
1.4.1 问题:为什么我在编译时执行的指令中,编译器是在工作区目录下的一个不存在的文件?
例:我的编译器在C:\usr\bin\,我的工作区是D:\workspace\,而VSCode执行的命令是D:\workspace\g++.exe ......。
这可能是因为你的 Cpp-Compiler 这一项没有填写正确,比如你填写的是g++,而此时你没有添加到Path中,或是没有进行重启,所以VSCode不知道编译器在哪。
2. 为什么我的中文输出会乱码?
这是因为编码不同而导致的。
解决方案:
- 将VSCode默认编码改为GBK(推荐)。菜单栏 → 文件 → 首选项 → 设置 ,搜索
files.encoding,将编码改为 Simplified Chinese (GBK) ,新建一个文件再试一下,也许就可以解决了 - 将系统编码设为 Unicode 。注意:这个方法可能会导致一些未知错误,比如以前的文档乱码。 按下 Windows(即徽标键),搜索 语言和区域 ,点击 区域设置 ,点击 管理语言设置,点击 更改系统区域设置 ,勾选 Beta版:Unicode UTF-8 提供全球语言支持 ,重启后生效。
- 使用宽字符输出(wcout),这确实是一种方法,但想必你平常不会使用这个。宽字符流设置中文环境:
setlocale(LC_ALL, "zh-CN");
3. 如何配置 C/C++ Debug
你需要在工作区目录的.vscode下创建launch.json和tasks.json,然后根据下面的步骤编辑它。
3.1 使用GDB进行Debug
GDB(gdb.exe)是属于GCC中的,如果你下载了GCC,那其中也会有GDB。它和你的编译器在同一个文件夹中。
3.1.1 launch.json
// 复制这一段到你的文件里
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/output/${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}/output/", // 这里的output和上面的program里的output是填Output location这一项
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "gdb", // 这里写你的GDB路径,如果你加到了path中,那你可以直接写gdb
"preLaunchTask": "C/C++ Compile" // 启动调试前的执行的任务
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
3.1.2 tasks.json
{
"tasks": [
{
"type": "shell",
"label": "C/C++ Compile",
"command": "g++", // 这里填编译器路径,如果你加入了Path,那你可以直接填 g++;否则,填编译器的完整路径
"args": [ // 这个是编译器参数,output是Output location,你可以添加参数,但这几项最好别改
"-g",
"${file}",
"-o",
"${fileDirname}\\output\\${fileBasenameNoExtension}.exe",
"-std=c++11",
],
"options": {},
"problemMatcher": [
"$gcc"
],
"group": "build"
}
],
"version": "2.0.0"
}
3.2 使用LLVM-LLDB进行Debug
LLDB(lldb.exe)是属于LLVM-Clang中的,如果你下载了Clang,那其中也会有LLDB。它和你的编译器在同一个文件夹中。这里要求必须把编译器文件夹路径点加到Path中。
请先下载这个拓展:CodeLLDB

你可能会遇到这个弹窗:

那么可以手动下载,前往 CodeLLDB - Github,
下载 codelldb-win32-x64.visx,然后回到VSCode,点击拓展栏右上角的这三个点

点击 从VISX安装,然后选择你刚才下载的那个文件,重新打开VSCode就好了。
3.2.1 launch.json
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "LLVM Debug",
"program": "${fileDirname}/output/${fileBasenameNoExtension}.exe",
"args": [],
"cwd": "${fileDirname}/build/",
"preLaunchTask": "LLVM-Clang Build"
}
]
}
3.2.1 tasks.json
{
"tasks": [
{
"type": "shell",
"label": "LLVM-Clang Build",
"command": "clang++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}\\build\\${fileBasenameNoExtension}.exe",
"-std=c++11"
],
"options": {},
"problemMatcher": [
"$gcc"
],
"group": "build"
}
],
"version": "2.0.0"
}
3.3 完成!
现在,点击左侧栏里的“运行和调试”,点击上面的绿色箭头就可以Debug了。点击文件的行号可以添加断点。
3.4 问题:无法找到文件 (Unable to start debugging… Program path ‘…’ is missing or invalid)
例:

这可能是因为你的路径没有填写正确,请检查。如果弹框中提到的文件确实存在,那么这是因为你使用的是GDB,而且你的文件路径中有中文字符导致了乱码。
你可以更换为LLDB,或是把系统编码改为Unicode(这个前面说过怎么改)
本篇教程就到此结束了,再见!
如果你有什么问题,可以在评论区留言。我会尽可能地帮助你,并且更新这篇文章。
60万+

被折叠的 条评论
为什么被折叠?



