关于VSCode的C/C++环境的一些常见问题

关于VSCode的C/C++环境的一些常见问题(Windows)

VSCode作为一个现代化编辑器,拓展数不胜数,吸引了大量用户。
本文将会介绍如何配置VSCode的C/C++环境和一些常见的问题(这些都是我遇到过的)。
VSCode的下载很简单,不过这里还是放一个链接: Visual Studio Code 下载,点中间的Download…就可以了。

1. 如何配置一个基本的C/C++环境?

1.1 首先,你需要找到这两个拓展(VSCode首页->左侧栏->几个小方块的图标,搜索C/C++):

C/C++ Extension Pack
这个拓展包含了基本的C/C++开发功能。
C/C++ Compile Run
这个拓展是用来运行代码的。

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

解决方法:

问题 1.2.2 下载速度慢

这个没什么解决方案,顶多就是挂个迅雷之类的,毕竟Github是国外网站,再快也快不到哪去,等个十几分钟也就下完了。

1.3 接下来,你需要编辑一下配置

1.3.1 C/C++ IntelliSense 配置(即自动补全)

下载完成后,按下 Ctrl + Shift + P ,输入 C/C++: Configurations (UI),回车 ,大概长这样(背景是我自己换的)。
IntelliSence

  • 配置名称: 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.jsontasks.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.jsontasks.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
你可能会遇到这个弹窗:
无法下载
那么可以手动下载,前往 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(这个前面说过怎么改)

本篇教程就到此结束了,再见!

如果你有什么问题,可以在评论区留言。我会尽可能地帮助你,并且更新这篇文章。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值