VScode 配置 C语言环境

遇到的问题集合

  1. mingw官方下载网站(https://sourceforge.net/projects/mingw-w64/files/)更新之后,与网上大多数教程上写的界面不同了。

网上大多数教程让下载这个:

但是现在找不到这个文件。

  1. 写hello.c文件时,报错:无法找到stdio.h。听说解决办法在这"https://www.jianshu.com/p/a2a4bc46f30e",但是对我无效。我的办法是重装vscode和mingw,重来一遍,可以了。

  2. build之后的hello.exe文件可以在vscode终端正确运行并打印出"hello world!",但是一调试就闪退,原因是编译生成的是x64程序,与电脑平台不兼容。虽然我的电脑是x64架构,但是不知道为什么在文件管理器中双击hello.exe文件,无法运行,显示我的电脑无法打开该文件。我的解决办法是:

    vscode中,ctrl+shift+P, 输入:

    找到:

    将windows-gcc-x64改为windows-gcc-x86,重新编译即可。

  3. 正常运行之后,无法调试。gdb似乎忽略了断点,直接运行完然后退出,表现出来的就是闪退。原因是编译时候没有加入-g选项。那么怎么加入-g选项呢?在task.json中加。

下面具体描述流程。

安装流程

  1. 下载mingw
    源代码网址:https://github.com/niXman/mingw-builds-binaries/releases
    下载这个x86_64-14.2.0-release-posix-seh-ucrt-rt_v12-rev0.7z:

    下载完后解压到D:\appData\如下:

    配置系统变量环境:
    D:\appData\mingw64\bin

cmd测试:

gcc -version

gdb -version

g++ -version

  1. 安装vscode

安装插件,这些都装上:

配置一些全局变量:

vscode中,ctrl+shift+P, 输入:

找到:

修改平台架构为x86。

填写自己的gcc路径。

ctrl+shift+P, 输入:C/C++: Select IntelliSense Configuration

我现在(完全配置好了)双击之后是这个:

但是第一次双击这个不是这个画面,是很奇怪的东西。那个时候我选的好像是Other这个选项。然后走一步看一步吧。复现不了了现在。

  1. 在桌面创建项目文件c_ex,项目结构如下:

    c_cpp_properties.json文件内容如下:

    {
    "configurations": [
    {
    "name": "windows-gcc-x64",
    "includePath": [
    "{workspaceFolder}/**" ], "compilerPath": "D:/appData/mingw64/bin/gcc.exe", "cStandard": "{default}",
    "cppStandard": "${default}",
    "intelliSenseMode": "windows-gcc-x64",
    "compilerArgs": [
    "-g",
    "-o",
    "test.exe"
    ]
    }
    ],
    "version": 4
    }

launch.json文件内容如下:

复制代码
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "My Debug",
      "type": "cppdbg",
      "request": "launch",
      "program": "c:/Users/whu_z/Desktop/c_ex/test.exe",
      "args": [],
      "stopAtEntry": false,
      "cwd": "c:/Users/whu_z/Desktop/c_ex",
      "environment": [],
      "externalConsole": true,
      "MIMode": "gdb",
      "miDebuggerPath": "D:/appData/mingw64/bin/gdb.exe",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": false
        }
      ],
      "preLaunchTask": "My build",
      "miDebuggerArgs": "",
      "filterStderr": false,
      "filterStdout": false
    },
    {
      "name": "C/C++ Runner: Debug Session",
      "type": "cppdbg",
      "request": "launch",
      "args": [],
      "stopAtEntry": false,
      "externalConsole": true,
      "cwd": "c:/Users/whu_z/Desktop/c_ex",
      "program": "c:/Users/whu_z/Desktop/c_ex/build/Debug/outDebug",
      "MIMode": "gdb",
      "miDebuggerPath": "gdb",
      "setupCommands": [
        {
          "description": "Enable pretty-printing for gdb",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ]
    }
  ]
}

settings.json由vscode自动生成。

task.json内容如下:

复制代码
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "My build",
            "type": "shell",
            "command": "D:/appData/mingw64/bin/gcc.exe",
            "args": [
                "c:/Users/whu_z/Desktop/c_ex/test.c",
                "-g",
                "-o",
                "c:/Users/whu_z/Desktop/c_ex/test.exe"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"],
            "detail": "Generated task to build hello.c"
        }
    ]
}

注意:当我写完hello.c文件后,vscode马上自动生成.vscode文件夹,里面有3个文件如上3个(除了tasks.json),但是内容不一样。我修改了除了settings.json文件的其它2个json文件内容,并添加了一个task.json文件。

hello.c文件内容如下:

复制代码
#include <stdio.h>
#include <stdlib.h>

int main(void) {
    int a = 1;
    int b = 2;
    int c = a + b;
    printf("%d", c);
    printf("hello, world!");
    system("pause");
    return 0;
}

一些感悟

tasks.json是用于设定如何编译文件的,设定编译动作。

launch.json是用于debug设置的。

c_cpp那个json文件用于配置编译器路径的。

相关推荐
海染棠花7 分钟前
vscode+platformIO开发STM32(八)
ide·vscode·stm32
公子无缘34 分钟前
【嵌入式】记一次解决VScode+PlatformIO安装卡死的经历
vscode·stm32·单片机·mcu·platformio
struggle20251 小时前
continue通过我们的开源 IDE 扩展和模型、规则、提示、文档和其他构建块中心,创建、共享和使用自定义 AI 代码助手
javascript·ide·python·typescript·开源
我叫珂蛋儿吖1 小时前
[redis进阶六]详解redis作为缓存&&分布式锁
运维·c语言·数据库·c++·redis·分布式·缓存
周Echo周2 小时前
20、map和set、unordered_map、un_ordered_set的复现
c语言·开发语言·数据结构·c++·算法·leetcode·list
安装虚拟机的老师傅2 小时前
【2025最新】Windows系统装VSCode搭建C/C++开发环境(附带所有安装包)
c语言·windows·vscode·其他
真的想上岸啊3 小时前
c语言第一个小游戏:贪吃蛇小游戏06
c语言·算法·链表
hardStudy_h3 小时前
C程序的存储空间分配
c语言·开发语言
h汉堡4 小时前
C/C++内存管理
java·c语言·开发语言·c++·学习
水水沝淼㵘5 小时前
嵌入式开发学习日志(数据结构--顺序结构单链表)Day19
linux·服务器·c语言·数据结构·学习·算法·排序算法