vscode的一些报错,希望可以得到解决

img

img


以及还有中文报错的情况
(希望可以得到解决,vscode版本目前为最新版,另外vscode的安装路径为d盘,c语言的配置来源于mingw64,一些必要的插件环境已配置)

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7696399
  • 这篇博客你也可以参考下:vscode编译运行c语言报错乱码解决方法
  • 除此之外, 这篇博客: vscode如何配置c语言环境(专为小白玩家编写)中的 vscode如何配置C语言环境 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 第一步:
    首先,先下载visual studio code下载,然后安装,安装过程就自行百度吧,汉化过程也请自行百度。安装完成打开vscode,进入到如下界面:vscode界面
    接下来,点击左侧第五个按钮如图所示:
    vscode操作
    在箭头的地方输入c/c++安装,我这里已经安装好了,然后接着下载MinGW,请下载64位的下载x86_64.seh版本的,如果直接下载.exe很可能由于网络问题无法安装,然后直接解压到自己喜欢的文件夹,并且配置环境变量,环境变量的配置我这里配置了两个,一个就是在系统环境变量path中加上解压后的MinGW的路径,即到bin的路径(例如:D:\app\setup\mingw\install\mingw64\bin),还有一个是INCLUDE环境变量,首先检查自己的系统环境变量里有没有INCLUDE,如果没有就新建一个,然后把mingw的include路径加进去,(例如:D:\app\setup\mingw\install\mingw64\include),如下图所示:
    环境变量配置
    配置完毕,要验证一下是否配置成功,快捷键win+R,win键是ctrl键和alt键之间的键,然后在里卖弄输入cmd。按下enter键,然后在窗口里输入gcc -v,如果如下图所示,即成功了:
    cmd
    接下来我们重启vscode,
    然后在vscode的Extensions中搜索code runnne并安装,接着开始配置文件。
    首先要创建一个文件夹,是用来放自己编写的项目的,然后用vscode打开这个文件夹,并在里面创建.vscode文件夹,并在vscode中创建三个json文件,内容如下:launch.json

    {
        "version": "0.2.0",  
        "configurations": [  
            {  
                "name": "(gdb) Launch", // 配置名称,将会在启动配置的下拉菜单中显示
                "type": "cppdbg",       // 配置类型,这里只能为cppdbg
                "request": "launch",    // 请求配置类型,可以为launch(启动)或attach(附加)  
                "program": "${workspaceFolder}/${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径  
                "args": [],             // 程序调试时传递给程序的命令行参数,一般设为空即可  
                "stopAtEntry": false,   // 设为true时程序将暂停在程序入口处,一般设置为false  
                "cwd": "${workspaceFolder}", // 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录  
                "environment": [],  
                "externalConsole": true, // 调试时是否显示控制台窗口,一般设置为true显示控制台  
                "MIMode": "gdb",  
                "miDebuggerPath": "D:\\app\\setup\\mingw\\install\\mingw64\\bin\\gdb.exe", // miDebugger的路径,注意这里要与MinGw的路径对应  
                "preLaunchTask": "gcc", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc  
                "setupCommands": [  
                    {   
                "description": "Enable pretty-printing for gdb",  
                        "text": "-enable-pretty-printing",  
                        "ignoreFailures": true  
                    }  
                ]  
            }  
        ]  
    }
    

    其中miDebuggerPath是你自己的MinGW中的gdb.exe路径,
    tasks.json的内容如下:

    {
        // 有关 tasks.json 格式的参考文档:https://go.microsoft.com/fwlink/?LinkId=733558 。
        "version": "2.0.0",
        "tasks": [{
            "label": "gcc",
            "type": "shell", // { shell | process }
            // 适用于 Windows 的配置:
            "windows": {
                "command": "gcc",
                "args": [
                    "-g",
                    "\"${file}\"",
                    "-o",
                    "\"${fileDirname}\\${fileBasenameNoExtension}.exe\""
                    // 设置编译后的可执行文件的字符集为 GB2312:
                    // "-fexec-charset", "GB2312"
                    // 直接设置命令行字符集为 utf-8:
                    // chcp 65001
                ]
            },
            // 定义此任务属于的执行组:
            "group": {
                "kind": "build", // { build | test }
                "isDefault": true // { true | false }
            },
            // 定义如何在用户界面中处理任务输出:
            "presentation": {
                // 控制是否显示运行此任务的面板。默认值为 "always":
                // - always:    总是在此任务执行时显示终端。
                // - never:     不要在此任务执行时显示终端。
                // - silent:    仅在任务没有关联问题匹配程序且在执行时发生错误时显示终端
                "reveal": "silent",
                // 控制面板是否获取焦点。默认值为 "false":
                "focus": false,
                // 控制是否将执行的命令显示到面板中。默认值为“true”:
                "echo": false,
                // 控制是否在任务间共享面板。同一个任务使用相同面板还是每次运行时新创建一个面板:
                // - shared:     终端被共享,其他任务运行的输出被添加到同一个终端。
                // - dedicated:  执行同一个任务,则使用同一个终端,执行不同任务,则使用不同终端。
                // - new:        任务的每次执行都使用一个新的终端。
                "panel": "dedicated"
            },
            // 使用问题匹配器处理任务输出:
            "problemMatcher": {
                // 代码内问题的所有者为 cpp 语言服务。
                "owner": "cpp",
                // 定义应如何解释问题面板中报告的文件名
                "fileLocation": [
                    "relative",
                    "${workspaceFolder}"
                ],
                // 在输出中匹配问题的实际模式。
                "pattern": {
                    // The regular expression.
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    // 第一个匹配组匹配文件的相对文件名:
                    "file": 1,
                    // 第二个匹配组匹配问题出现的行:
                    "line": 2,
                    // 第三个匹配组匹配问题出现的列:
                    "column": 3,
                    // 第四个匹配组匹配问题的严重性,如果忽略,所有问题都被捕获为错误:
                    "severity": 4,
                    // 第五个匹配组匹配消息:
                    "message": 5
                }
            }
        }]
    }
    

    最后一个是setting.json,如下所示:

    {
        "files.associations": {
            "tidl_alg_int.h": "c",
            "limits": "c"
        }
    }
    

    保存完毕,然后关闭vscode,重启vscode。然后在.vscode的上一级文件夹创建一个C语言编写的``程序,如下图所示:

    c程序
    c程序编写成功,点击图中右上角小三角即可运行,然后再图中的下方的终端即可看到运行结果,也可点击F5直接debug运行。

    以下为图中的示例代码:是一个小游戏,如果运行成功,即代表C语言环境安装成功:

    #include<stdio.h>
    #include<string.h>
    #include<conio.h>
    #include<windows.h>
    #include<stdlib.h>
    #define MAX 100
    long long int speed = 0;//控制敌机的速度 
    int position_x, position_y;//飞机的所在位置 
    int high, width;//地图的大小 
    int bullet_x, bullet_y;//子弹的位置 
    int enemy_x, enemy_y;//敌人的位置 
    int map[MAX][MAX];
    /*0表示空白,1表示战机*的区域,2表示敌人战机的位置。
    3表示上下围墙,4表示左右围墙,5表示子弹的位置*/
    int score;
    void starup()//初始化所有的信息 
    {
        high = 20;
        width = 30;
        position_x = high / 2;
        position_y = width / 2;
        bullet_x = 0;
        bullet_y = position_y;
        enemy_x = 2;
        enemy_y = position_y - 1;
        score = 0;
    
    }
    void startMap()
    {
        int i, j;
        for (i = 1; i <= high - 1; i++)
        {
            map[i][1] = 4;
            for (j = 2; j <= width - 1; j++)
                map[i][j] = 0;
            map[i][width] = 4;
        }
        //下方围墙的初始化 
        i = high;
        for (j = 1; j <= width; j++)
            map[i][j] = 3;
    
        map[bullet_x][bullet_y] = 5;
        /*这里是战机大小的初始化开始*/
        map[position_x - 1][position_y] = 1;
        i = position_x;
        for (j = position_y - 2; j <= position_y + 2; j++)
            map[i][j] = 1;
        map[position_x + 1][position_y - 1] = 1;
        map[position_x + 1][position_y + 1] = 1;
        /***      初始化结束         **/
    
        /* 敌人战机的初始化 */
        map[enemy_x][enemy_y] = 2;
        map[enemy_x - 1][enemy_y - 1] = 2;
        map[enemy_x - 1][enemy_y + 1] = 2;
        /* 敌人战机初始化结束*/
    }
    void HideCursor()//隐藏光标 
    {
        CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
        SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
    }
    void gotoxy(int x, int y)//清理一部分屏幕 
    {
        HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
        COORD pos;
        pos.X = x;
        pos.Y = y;
        SetConsoleCursorPosition(handle, pos);
    }
    void updateWithoutInput()//于输入无关的跟新 
    {
        if (bullet_x > 0)
            bullet_x--;
        if ((bullet_x == enemy_x) && (bullet_y == enemy_y))//当敌人的飞机被击中时 
        {
            score++;
            enemy_x = 0;
            enemy_y = rand() % width;
            bullet_x = 0;
        }
        if (enemy_x > high)//当飞机超出区域 
        {
            enemy_x = 0;
            enemy_y = rand() % width;
        }
        if (speed == 1)
            for (int i = 1; i <= 10000; i++)//用来控制敌机的速度 
            {
                for (int j = 1; j <= 1000; j++)
                {
                    speed = 1;
                }
            }
        speed = 0;
        if (speed == 0)
        {
            enemy_x++;
            speed = 1;
        }
    }
    void updateWithInput()//与输入有关的更新 
    {
        char input;
        if (kbhit())//在VC6.0++下,为_kbhit()
        {
            input = getch();//在VC6.0++下为_getch();
            if (input == 'a')
                position_y--;
            if (input == 's')
                position_x++;
            if (input == 'd')
                position_y++;
            if (input == 'w')
                position_x--;
            if (input == ' ')
            {
                bullet_x = position_x - 1;
                bullet_y = position_y;
            }
        }
    }
    void show()//展示的内容 
    {
        gotoxy(0, 0);
        int i, j;
        for (i = 1; i <= high; i++)
        {
            for (j = 1; j <= width; j++)
            {
                if (map[i][j] == 0)
                    printf(" ");
                if (map[i][j] == 1)
                    printf("*");
                if (map[i][j] == 2)
                    printf("#");
                if (map[i][j] == 3)
                    printf("~");
                if (map[i][j] == 4)
                    printf("|");
                if (map[i][j] == 5)
                    printf("|");
            }
            printf("\n");
        }
        printf("\n你的得分:%d\n\n", score);
        printf("操作说明: ASDW分别操作 左下右上四个的移动\n");
        printf("**空格是发出子弹**\n");
    }
    int main()
    {
        starup();
        while (1)
        {
            HideCursor();
            startMap();
            show();
            updateWithoutInput();
            updateWithInput();
        }
        return 0;
    }
    

我引用ChatGPT作答:针对你提供的问题,我会提供一些解决方案:

1 无法同步设置,因为文件中的内容无效
这个问题可能是由于 VS Code 配置文件中存在语法错误导致的。可以尝试以下方法进行解决:

在 VS Code 中打开设置文件(Settings)。
如果有语法错误,编辑器会在底部显示错误信息。
修复错误并保存文件,然后尝试同步设置。
2 C/C++ 配置警告无法使用compilerPath解析配置:“cl.exe”
这个问题可能是由于未正确配置 C/C++ 扩展或未正确安装 C++ 编译器导致的。可以尝试以下方法进行解决:

确保已正确安装 C++ 编译器(例如 Mingw-w64)。
在 VS Code 中打开 C/C++ 扩展设置。
将 "C_Cpp.default.compilerPath" 配置为正确的编译器路径。例如: "C:\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin\g++.exe"。
保存设置并重新打开项目以使更改生效。
3 中文报错
如果 VS Code 显示中文报错信息,可以尝试以下方法进行解决:

在 VS Code 中打开设置文件(Settings)。
在搜索框中输入 "locale"。
将 "Locale" 配置为 "en" 或 "en-US",以更改语言为英文。
保存设置并重新打开 VS Code。
希望以上方法可以帮助你解决问题。

如果之前你用VisualStudio打开过,那么目录下应该有一个vs文件夹,删掉应该就不会报这个错了