• Windows 下使用 VScode 运行 C/C++ 程序


    下载安装及配置

    下载安装 Visual Studio Code,安装中将如下选项勾选,有助于后期使用方便,安装位置自定义即可。

    下载 mingw-w64,建议下载 离线版,下载完成后,找一个合适的位置(相当于安装位置),解压安装包。例如本文演示地址为:C:/mingw64

    进入解压好的文件夹下的 bin 文件夹,将当前路径(C:/mingw64/bin)复制下来,然后选中桌面上的此电脑,右击鼠标,选择属性,选择高级系统设置,点击环境变量,选择系统环境变量下的 Path,选择编辑,点新建,然后把刚刚复制的文件路径粘贴进去,然后点确定并退出。

    按下键盘上的 Win+r,输入 cmd,在弹出的对话框中,输入:gcc -v

    若出现 MinGW-W64 的提示(一堆英文),即为安装成功:

    如下有两种编译方法,第一种是用 VScode 的扩展 Code Runner 进行编译,操作简单,但是缺点是无法调试,只能用于简单的编译,适合快速测试一些简单的程序。第二种是新建相关文件,搭建成一个环境进行编译调试,相比于第一种方法,会稍显麻烦。建议使用第二种方法更好。

    第一种方法

    在 VScode 里,安装 C/C++ 和 Code Runner 这两个扩展


    安装完成后,重启 VScode,会在右上角找到一个三角形标志,这个标志就是用来编译的。

    接下来点击 文件 > 首选项 > 设置 > 用户设置 > 拓展 > Run Code Configuration,找到 Run In Terminal 选项并打上勾。这一步是为了解决程序中 scanf() 等请求键盘输入数据的函数,在运行时无法从键盘输入数据的问题。

    完成后,按下键盘的 Ctrl+N 新建一个文件并保存,例如 helloworld.c 文件:

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(void) {
        printf("Hello World!
    ");
        system("pause");
        return 0;
    }
    

    点击 VScode 右上角的三角形,即可自动进行编译运行。

    第二种方法

    编译调试 C 过程

    首先在你需要的位置新建一个文件夹,路径不能有中文,例如本次演示路径为:D: est_c

    打开 VScode ,安装 C/C++ 扩展

    安装完成后,重启 VScode,点击 文件->打开文件夹,将刚才新建的文件夹添加到 VScode 里。然后在侧边栏里,右键选择新建文件夹,命名为 .vscode,同样的步骤再新建一个名称为 build 的文件夹。

    右键选中 .vscode 文件夹,选择新建文件,命名为 c_cpp_properties.json,填入如下代码:

    注意 compilerPath 更改为你所安装的路径,注意斜杠的方向。

    {
        "configurations": [
            {
                "name": "MinGW64",
                "intelliSenseMode": "gcc-x64",
                "compilerPath": "C:/mingw64/bin/gcc.exe",
                "includePath": [
                    "${workspaceFolder}"
                ],
                "cStandard": "c11"
            }
        ],
        "version": 4
    }
    

    同样的步骤,右键选中 .vscode 文件夹,新建名称为 launch.json 的文件,填入如下代码:

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "C Launch (GDB)", // 配置名称
                "type": "cppdbg",         // 配置类型
                "request": "launch",
                "targetArchitecture": "x64",
                "program": "${fileDirname}/build/${fileBasenameNoExtension}.exe",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceRoot}",
                "externalConsole": false, // 调试时是否显示控制台窗
                "internalConsoleOptions": "neverOpen",
                "MIMode": "gdb",
                "miDebuggerPath": "C:/mingw64/bin/gdb.exe", // 更改为你所安装的路径,注意斜杠的方向,别输错了!!!
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for GDB",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": false
                    }
                ],
                "preLaunchTask": "compile" 
            }
        ]
    }
    

    右键选中 .vscode 文件夹,新建名称为 tasks.json 的文件,填入如下代码:

    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "compile",
                "command": "gcc",
                "args": [
                    "${file}",
                    "-o",
                    "${fileDirname}/build/${fileBasenameNoExtension}.exe",
                    "-O0",
                    "-ggdb3",
                    "-Wall",
                    "-std=c11",
                    "-Wno-format",
                    "-finput-charset=UTF-8",
                    "-fexec-charset=GB18030",
                    "-D _USE_MATH_DEFINES"
                ],
    
                "type": "shell",
                
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
    
                "presentation": {
                    "echo": true,
                    "reveal": "always",
                     "focus": false,
                     "panel": "shared"
                },
            }
        ]
    }
    

    完成后,效果如下:

    右键点击左侧栏空白处,新建名为 hello_world.c 测试文件,填入如下测试代码:

    #include <stdio.h>
    #include <stdlib.h>
    
    int j = 0;
    
    int main(void) {
        for (int i = 0; i < 4; i++) {
            j++;
            printf("Hello World!
    ");
        }
    
        system("pause");
        return 0;
    }
    

    保存后,按下 F5 即可编译。

    如下为调试方法:

    hello_world.c 文件里,找一个位置打断点,例如在 for 循环这里:

    然后按下 F5 进行编译,它会自动停在断点位置:

    通过上方的按钮进行操控即可。还可以选中某个变量,右键选择添加到监视,就可以实时查看该变量的变化情况。

    编译调试 C++ 过程

    和编译调试 C 过程一样,只需要修改 .vscode 文件里的代码即可。

    文件 c_cpp_properties.json 代码更换为:

    注意 compilerPath 更改为你所安装的路径,注意斜杠的方向。

    {
        "configurations": [
            {
                "name": "MinGW64",
                "intelliSenseMode": "gcc-x64",
                "compilerPath": "C:/mingw64/bin/g++.exe",
                "includePath": [
                    "${workspaceFolder}"
                ],
                "cppStandard": "c++17"
            }
        ],
        "version": 4
    }
    

    文件 launch.json 代码更换为:

    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "C++ Launch (GDB)",
                "type": "cppdbg",
                "request": "launch",
                "targetArchitecture": "x64",
                "program": "${fileDirname}/build/${fileBasenameNoExtension}.exe",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceRoot}",
                "externalConsole": false,
                "internalConsoleOptions": "neverOpen",
                "MIMode": "gdb",
                "miDebuggerPath": "C:/mingw64/bin/gdb.exe",    // 更改为你所安装的路径,注意斜杠的方向,别输错了!!!
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for GDB",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": false
                    }
                ],
                "preLaunchTask": "Compile" 
            }
        ]
    }
    

    文件 tasks.json 代码更换为:

    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "Compile",
                "command": "g++",
                "args": [
                    "${file}",
                    "-o",
                    "${fileDirname}/build/${fileBasenameNoExtension}.exe",
                    "-O0",
                    "-ggdb3",
                    "-Wall",
                    "-static-libgcc",
                    "-std=c++17",
                    "-finput-charset=UTF-8",
                    "-fexec-charset=GB18030",
                    "-D _USE_MATH_DEFINES"
                ],
    
                "problemMatcher": {
                    "owner": "cpp",
                    "fileLocation": [
                        "absolute",
                    ],
                    "pattern": {
                        "regexp": "^(.*):(\d+):(\d+):\s+(warning|error):\s+(.*)$",
                        "file": 1,
                        "line": 2,
                        "column": 3,
                        "severity": 4,
                        "message": 5
                    }
                },
    
                "type": "shell",
                
                "group": {
                    "kind": "build",
                    "isDefault": true
                },
    
                "presentation": {
                    "echo": true,
                    "reveal": "always",
                     "focus": false,
                     "panel": "shared" 
                },
            }
        ]
    }
    

    新建 CPP 测试文件 hello_world.cpp

    #include <cstdlib>
    #include <iostream>
    
    using namespace std;
    
    int j = 0;
    
    int main(void) {
    
        for (int i = 0; i < 10; i++) {
            j++;
            cout << "Hello World!" << endl;
        }
    
        system("pause");
        return 0;
    }
    

    其他的操作都一样了。

  • 相关阅读:
    【带着canvas去流浪(5)】绘制K线图
    【带着canvas去流浪(4)】绘制散点图
    【带着canvas去流浪】 (3)绘制饼图
    Mybatis缓存(1)--------系统缓存及简单配置介绍
    this引用逃逸
    MySQL优化(1)--------常用的优化步骤
    Java的内存模型
    Java Generator
    深入理解Java重载与重写
    对象的自我救赎
  • 原文地址:https://www.cnblogs.com/zhangxiaochn/p/11624886.html
Copyright © 2020-2023  润新知