在配置VSCode之前,我希望你看一下 下面的文章,去了解一下编译器、编辑器、集成开发环境、环境变量是什么。

编辑器、编译器、IDE、环境变量等 新手初识 - 恒星不见|夜中星陨如雨

1.下载MinGW64

如果你是从DevC++那篇文章(编辑器、编译器、IDE、环境变量等 新手初识 - 恒星不见|夜中星陨如雨)过来的。

理论上你可以直接使用DevC++软件自带的MinGW,但是DeVC++自带的MinGW的gcc版本较低,在后面的配置中,无法适应多源文件编译的新版gcc语法。

故推荐下载MinGW64,你可以去MInGW64官网去下载 (Downloads - MinGW-w64)。但是官网下载较慢,可以在 https://gitcode.com/open-source-toolkit/1f790/下载

这里给出百度网盘链接 百度网盘 请输入提取码

夸克网盘链接 https://pan.quark.cn/s/3493cad47a10

下载之后,对mingw-w64.zip解压。

如果不想自己修改配置文件,就通过百度网盘或夸克网盘下载,并和我一样放在E盘下,然后把E:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin添加到环境变量里,就可以直接用我的配置文件。(本文后面提到)

或者你放在其他地方,把配置文件里的路径都改成你对应的(本文后面提到),再把MinGW64里的gcc编译器路所在目录添加到环境变量,不会的参考上篇文章。

2.打开VSCode

默认大家都安装了VSCode,安装过程也十分简单,一路点击下一步就行。(你也可以自定义安装路径)

先安装几个必要插件,Chinese插件可以汉化软件,上面三个C/C++相关的可以提供C语言支持(不包括编译器),例如代码提示,路径检测等功能。

打开文件夹,这个文件夹里将保存你开发的项目工程,例如一堆.c .h文件。

我这里提前新建了一个test空文件夹。

打开后左边像这样。

新建一个main.c文件

写一个打印HelloWorld

可以看到没有代码提示,也检测不到头文件,这是因为,VSCode只是一个文本编辑器,就像记事本一样,所以我们要进行配置,才能使用。

但是,即使这样,我们依然可以使用命令行来调用gcc编译它,打开内置终端,它和系统自带的终端相同,你可以使用PowerShell或cmd等

在终端输入gcc main.c,可以看到编译后产生的可执行文件a.exe

然后在终端输入a.exe,可以看到,程序确实运行了。这也充分显示了编辑器、编译器、集成开发环境的区别。

但是这样,还没体现出VSCode的优势,我们希望它具有代码提示和语法检错这些功能。

3.配置VSCode——C语言

展开.vscode文件夹,他会在用户打开文件夹时自动添加。如果没有,那就自己新建一个 .vscode文件夹

接下来,我们需要编写几个json文件。

首先在.vscode文件夹下创建这几个文件 c_cpp_properties.json 、launch.json、tasks.json。

然后把这些内容编写到对应文件中

  1. c_cpp_properties.json

{
    "configurations": [
        {
            "name": "Win64",
            "includePath": [
                
                "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\include",
                "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\x86_64-w64-mingw32\\include",
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "10.0.22000.0",
            "compilerPath": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "${default}"
        }
    ],
    "version": 4
}
  1. launch.json

{
    "version": "0.2.0",
    "configurations": [
        
        {
            "name": "c",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
            "preLaunchTask": "c",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "c++",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
            "preLaunchTask": "c++",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "C多源文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
            "preLaunchTask": "c多源文件",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
        {
            "name": "C++多源文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
            "preLaunchTask": "cpp多源文件",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },
    ]
}

3.tasks.json

{
    "tasks": [
        {
            "type": "cppbuild",
            "label": "c",
            "command": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        },
        {
            "type": "cppbuild",
            "label": "c++",
            "command": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        },
        {
            "type": "cppbuild",
            "label": "c多源文件",
            "command": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${fileDirname}\\*.c",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        },
        {
            "type": "cppbuild",
            "label": "cpp多源文件",
            "command": "E:\\mingw-w64\\x86_64-8.1.0-posix-seh-rt_v6-rev0\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${fileDirname}\\*.cpp",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "调试器生成的任务。"
        }
        
    ],
    "version": "2.0.0"
}

请注意,这三个文件里涉及到路径的都需要改成你对应的。比如下图这个地方,就需要根据个人存放路径修改。(如果你和我一样把mingw-w64放在E盘,那就可以不用修改)

总之,就是在你下载的MinGW64里找到gcc.exe和gdb.exe,并把这两个文件的绝对路径改到json配置文件里。

这个时候,我们就可以看到有了代码提示,也可以检测到头文件了。这里的system("pause")是为了让终端停留,而不是一闪而过

#include <stdio.h>
#include <stdlib.h>
int main()
{
    printf("helloworld\n");
    system("pause");
}

点击左边这个图标,使用C(如果是C++(.cpp)文件就选择C++),然后点击绿色的三角形图标(或者F5),就可以编译运行代码了。

4.正常开发流程

1.新建工程文件夹

2.修改.vscode文件里的json配置文件。为了避免每次新建工程都要修改.vscode里的json文件,可以把之前写好的.vscode直接复制到新工程文件夹下。

3.开发

5.注意事项:

工程路径不要有中文,因为windows中文版默认是GBK编码的(可以在设置->时间和语言里改成Unicode,但不建议,这样会导致其他古老的软件乱码),用中文不易符合国际通用规范,容易出现错误。

不要有空格,想分隔用下划线_ 。因为命令和命令参数之间是用空格隔开的。