Visual Studio Code

  • 关于编译运行C/C++的配置安装指南
  • 关于安装运行python的指南

前言

上大学很多朋友可能会遇到编程课程,会学习到C/C++的一些初步知识,相较于dev c++我更推荐各位有能力者使用Visual Studio Code(以下简称为VSCode)进行编程与开发,由于开源和丰富的插件扩展,更新迭代和新功能加入的速度很快,同时它的颜值一定会让你欲罢不能,它会为你提供更加广阔的学习前景和诸如Leetcode刷题等等的功能。

对于C/C++语言初学者的优势

  1. 比Visual Studio的空间占用小很多(虽然大于Dev C++)。
  2. 不需要每个源文件都新建一个单独的项目,各文件相互独立(此项由tasks.jsonlaunch.json中的配置决定)。
  3. 将所有源代码可以分类整理,一个程序直接新建文件且均可以轻松从文件资源管理器中找到。
  4. C/C++扩展自带的中文报错提示,方便初学者查看错误。

总而言之,计算机方面的学习,要从学会合理运用搜索引擎以及看文档看博客开始,希望你从我这篇博客起步,不断学习。

鉴于依旧存在初学者对此配置过程无法很好地进行,特制作一小工具来帮助配置:

Github: VSCodeCppHelper
Download: VSCodeCppHelper_V1.0.2.exe 备用链接

你可以运行此程序来辅助安装!

2021.08.06

VSCode的安装

需要的工具

  1. 暂不提供mac/linux的安装教程
  2. 教程示例平台与版本
    • Windows 10 x64 2004
    • VSCode version 1.59.0

安装步骤

  1. 下载并运行VSCodeUserSetup-x64-x.x.x.exe进行常规安装操作。
    注:我推荐不更改安装位置,并且在附加任务中“其他”中的四项全部勾选,即将用Code打开加入文件和文件夹添加入右键菜单中,并注册为受支持的文件类型的编辑器。

  2. VSCode刚刚安装完成时是英文界面,在窗口左侧四个小方块组成的Extensions中搜索Chinese并安装所示第一个扩展。
    依照右下角提示重启VSCode,重启后你应该会看到中文界面了。

    强烈建议你将设置中的自动保存(Auto save)项目打开(设置为afterDelay)

  3. VSCode可以打开单独的文件进行编辑,但在真实工作学习中利用它的“文件夹”和“工作区”功能会更加频繁。
    在“文件夹”模式下,VSCode会把你选择的文件夹在左侧展示出来,并且你可以进行文件夹设置,让每个文件夹有不同的功能。

    在进行以下步骤之前,我强烈建议你在合适的地方新建一个文件夹(例中称为C:\Coding),以下的内容会默认你已经在VSCode中打开了这个文件夹。

C/C++

需要的工具

  1. 暂不提供mac/linux的安装教程
  2. 教程示例平台与版本
    • TDM64-GCC version 10.3.0

安装步骤

  1. 打开并运行tdm64-gcc-x.x.x.exe进行安装操作。

你可能需要取消勾选Check for updated files on the TDM-GCC server以防止因为众所周知的原因导致访问失效而无法继续安装。

  1. 依次点击Create,选择安装路径(此处以C:\TDM-GCC-64为例),而后点击Install安装Recommended所包含的包,安装完成后点击Finish即可。

  2. TDM-GCC会将运行路径自动添加入系统环境变量中的PATH,你可以点击 Win + R输入cmd后运行g++ -v检查安装是否成功。如果可以看到最后一行显示gcc version x.x.x (tdm64-x)即安装成功。

配置步骤

此教程仅适用于写小型C/C++程序,大型工程请适当更改步骤。
我默认你了解并清楚部分路径需要自主替换。
此处的文件路径配置会以我推荐的目录结构为例:

├─ .vscode
│  ├─ launch.json
│  └─ tasks.json
├─ Debug
│  ├─ Data
│  │  └─ ...
│  ├─ 0.exe
│  └─ 1.exe
└─ Scripts
   ├─ Folder
   │  └─ ...
   ├─ main.cpp
   ├─ 0.cpp
   └─ 1.cpp

请注意,你可以在Scripts文件夹中任意创建子文件夹并存储代码,这不会影响编译和运行,可以思考一下为什么并推测一下配置机制,只是你需要定期清理Debug文件夹中的exe文件,或者可以用python写个脚本一键清理。这需要你自己研究。

  1. 打开VSCode至你的文件夹(此处以C:\Coding为例)。

  2. 打开左侧Extensions选项卡,搜索c++并安装C/C++C/C++ Intellisence两个扩展。

  3. 在根目录新建文件夹Scripts以及Debug

  4. Scripts文件夹中新建文件helloworld.cpp,写下传统的helloworld程序。

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
       cout << "Hello world!" << endl;
       return 0;
    }
  5. 单击左侧菜单中的运行并点击运行和调试,选择C++(GDB/LLDB)

  6. 此时VSCode会在你的根目录下新建.vscode文件夹,此文件夹中用于存放VSCode的相关配置文件,打开launch.json替换或修改为如下内容:

    {
       // 使用 IntelliSense 了解相关属性。
       // 悬停以查看现有属性的描述。
       // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
       "version": "0.2.0",
       "configurations": [
          {
                "name": "C++ Launch",//启动项的名称
                "type": "cppdbg",
                "request": "launch",
                "targetArchitecture": "x64",
                "program": "${workspaceRoot}/Debug/${fileBasenameNoExtension}.exe",//运行文件的路径
                "args": [],//运行文件的参数,一般没有
                "stopAtEntry": false,//是否在入口点处暂停
                "cwd": "${workspaceRoot}",
                "environment": [],
                "console": "internalConsole",
                "internalConsoleOptions": "neverOpen",
                "MIMode": "gdb",
                "miDebuggerPath": "C:/TDM-GCC-64/bin/gdb64.exe",//DEBUG程序的路径
                "setupCommands": [{
                   "description": "Enable pretty-printing for gdb",
                   "text": "-enable-pretty-printing",
                   "ignoreFailures": false
                }],
                "preLaunchTask": "Compile"//运行前需要完成的任务
          },
       ]
    }
  7. .vscode文件夹中新建文件tasks.json并输入如下内容:

    {
     "version": "2.0.0",
     "tasks": [
         {
             "label": "Compile",
             "command": "g++",//编译程序
             "args": [
                 "-g","${file}",   //指定编译源代码文件
                 "-o","${workspaceRoot}\\Debug\\${fileBasenameNoExtension}.exe", // 指定输出文件名,不加该参数则默认输出a.exe
                 "-ggdb3",   // 生成和调试有关的信息
                 "-Wall",    // 开启额外警告
                 "-static-libgcc",   // 静态链接
                 "-std=c++2a",  //使用C++20标准
                 "-Wno-format",
                 "-finput-charset=UTF-8",//输入编译器文本编码 默认为UTF-8
                 "-fexec-charset=UTF-8"//编译器输出文本编码 自行选择
             ],
    
             "type": "shell",
    
             "presentation": {
                 "echo": true,
                 "reveal": "silent", // 在“终端”中显示编译信息的策略,可以为always,silent,never
                 "focus": false,
                 "panel": "shared" // 不同的文件的编译信息共享一个终端面板
             },
    
             "problemMatcher": {
                 "owner": "cpp",
                 "fileLocation": [
                     "relative", "\\"
                 ],
                 "pattern": {
                     "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                     "file": 1,
                     "line": 2,
                     "column": 3,
                     "severity": 4,
                     "message": 5
                 }
             }
         }
       ]
    }
  8. 之后回到helloworld.cpp点击 F5并运行,若遇到错误列表显示无法找到或者出现如下错误等问题。

    g++ : 无法将“g++”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次。

    请关闭并重新打开VSCode使其重新加载插件以及Powershell。

VSCode默认情况下无法输出中文,为了修复这个问题你需要引用stdlib.h或者cstdlib库,并在输出语句前加入system("chcp 65001");以改变命令行编码。

#include <stdlib.h> // for C
//或
#include <cstdlib> // for C++
//before any output
//change the encoding of shell to GBK
system("chcp 65001");
  1. 再次启动VSCode后点击 F5,你应该会看到如下画面。

    至此,基础配置结束。

调试步骤

VSCode中的调试体验是远超dev c++的,而断点调试是程序debug过程中十分好用的手段(别再运行中输出信息了啊喂),下面我将教你进行简单的调试工作。

  1. 示例代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int main()
    {
       bool flag = false;
       int n = 100;
       cout << "{2, ";
       for (int i = 3; i <= n; ++i){
          flag = true;
          for (int j = 2; j < sqrt(i) + 1; ++j){
                if(i % j == 0){
                   flag = false;
                   break;
                }
          }
          if(flag){
                cout << i << ", ";
          }
       }
       cout << "}" << endl;
       return 0;
    }
  2. 点击行号左侧进行“打断点”操作,程序会在红点处暂停运行。

  3. 点击 F5运行程序,你会看到如下界面:

    调试控制台中输入的任何语句都会被立即执行并反馈结果。

    右击红点处,选择编辑断点,可以设置只有满足条件时才进行中断。

  4. 断点调试的基础操作就是这些,更多功能等待你继续探索。

更多技巧

VSCode中点击 F5是开启调试,这里我建议你用 F6作为启动C/C++直接运行的快捷键。这样不会启动调试程序,会具有更快的速度但不能进行调试。
以下是其详细配置,希望大家举一反三得利用tasks功能。你可以从这里获取相关文档。

  1. tasks.json中的tasksjson数组中添加如下项目:

    如果不知道添加在何处,请先从此处学习json的基础结构和数据格式。

    {
       "label": "Run",
       "type": "shell",
       "dependsOn": "Compile",//任务间的依赖关系
       "command": "${workspaceRoot}\\Debug\\${fileBasenameNoExtension}.o",//linux中运行xxx.o可执行文件
       "windows": {
             "command": "${workspaceRoot}\\Debug\\${fileBasenameNoExtension}.exe"//windows中运行xxx.exe可执行文件
       },
       "args": [],
       "presentation": {
             "reveal": "always",
             "focus": true
       },
       "problemMatcher": [],
       "group": {//此项用于给任务编组,这会有利于快捷键绑定
             "kind": "build",//定义任务组
             "isDefault": true//定义默认运行值
       },
    }
  2. 打开左下角设置中的键盘快捷方式,并且在右上角最小化按钮下方找到一个带有箭头的文件按钮(即“打开键盘快捷方式(JSON)”按钮),打开默认在用户目录下的keybindings.json文件进行编辑。在数组中添加如下项目:

    {
       "key": "f6",//绑定到F6
       "command": "workbench.action.tasks.build",//运行build任务组
       "when": "!inDebugMode"//为了防止命令冲突,只有在非debug模式下此快捷键才会有效
    }
  3. 在任意C++文件中点击 F6,会执行编译任务并直接在控制台内运行编译后的程序。

Python

需要的工具

  1. 暂不提供mac/linux的安装教程
  2. 教程示例平台与版本
    • Python version 3.8.5 x64
  3. 你可以在https://www.python.org/downloads/release/python-xxx/下找到64位Python的下载地址

安装步骤

  1. 打开并运行python-x.x.x(-amd64).exe进行安装操作
    注意选择Add Python x.x to PATH
    • 点击Install Now等待安装
    • 最后点击Disable path length limit(可选)

配置步骤

  1. 打开VSCode至你的文件夹(此处以C:\Coding为例)。

  2. 打开左侧Extensions选项卡

    • 搜索python并安装Python扩展。
  3. Scripts文件夹中新建Python文件夹。(可选)

  4. 添加Helloworld.py并输入:

    print("Hello World!")
  5. 右下角可能会提示你安装Linter,这是python的代码规范检查器,你可以选择安装。

  6. 新建或打开.vscode/launch.json,点击右下角添加配置

  7. 依次选择Python以及Python File,保存并关闭文件。

  8. 在你的Helloworld.py文件下点击 F5,即可看到运行结果。

调试的步骤和上文C/C++的使用大同小异,此处不作赘述。
如果运行时报错请检查运行选项卡最上方的配置是否选择为Python: 当前文件

优秀插件推荐