VScode 配置 C语言环境

news2025/1/14 10:25:53

遇到的问题集合

  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文件用于配置编译器路径的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2276431.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

013:深度学习之神经网络

本文为合集收录&#xff0c;欢迎查看合集/专栏链接进行全部合集的系统学习。 合集完整版请参考这里。 深度学习是机器学习中重要的一个学科分支&#xff0c;它的特点就在于需要构建多层且“深度”的神经网络。 人们在探索人工智能初期&#xff0c;就曾设想构建一个用数学方式…

STM32-Flash存储

目录 1.0 闪存模块组织 2.0 Flash基本结构 3.0 Flash解锁 4.0 指针访问存储器地址 5.0 程序存储器编程 6.0 选项字节 7.0 选项字节编程 8.0 选项字节擦除 9.0 电子签名 10.0 手册解读 定义&#xff1a; STM32F1系列的FLASH包含程序存储器、系统存储器和选项字节三个部…

工程水印相机结合图纸,真实现场时间地点,如何使用水印相机,超简单方法只教一次!

在工程管理领域&#xff0c;精准记录现场信息至关重要。水印相机拍照功能&#xff0c;为工程人员提供了强大的现场信息记录工具&#xff0c;助力工程管理和统计工程量&#xff0c;更可以将图片分享到电脑、分享给同事&#xff0c;协同工作。 一、打开图纸 打开手机版CAD快速看图…

Oracle 分区索引简介

目录 一. 什么是分区索引二. 分区索引的种类2.1 局部分区索引&#xff08;Local Partitioned Index&#xff09;2.2 全局分区索引&#xff08;Global Partitioned Index&#xff09; 三. 分区索引的创建四. 分区索引查看4.1 USER_IND_COLUMNS 表4.2 USER_INDEXES 表 五. 分区索…

JDK安装配置保姆级教程【图文详解】

目录 一. JDK介绍 二. JDK下载 三. JDK安装 四. 配置环境 五. 验证安装 一. JDK介绍 Java 环境分JDK 和JRE &#xff0c;JDK就是Java Development Ki&#xff0c;JDK是面向开发人员使用的SDK&#xff0c;它提供了Java的开发环境和运行环境。本文以Windows 11系统&#xff0c;JD…

浅谈云计算01 | 云计算服务的特点

在当今数字化时代&#xff0c;云计算作为一种强大的技术解决方案&#xff0c;正逐渐改变着企业和个人对信息技术的使用方式。本文将详细探讨云计算的五个主要特点&#xff0c;包括按需自助服务、广泛的网络接入、资源池化、快速弹性伸缩以及可计量服务。 一、按需自助服务 云…

【Git版本控制器--1】Git的基本操作--本地仓库

目录 初识git 本地仓库 认识工作区、暂存区、版本库 add操作与commit操作 master文件与commit id 修改文件 版本回退 撤销修改 删除文件 初识git Git 是一个分布式版本控制系统&#xff0c;主要用于跟踪文件的更改&#xff0c;特别是在软件开发中。 为什么要版本…

Unity使用Vuforia插件进行AR开发

零、最终效果 Unity使用Vuforia插件进行AR开发 一、资源准备 1、在Unity中添加Vuforia插件 &#xff08;1&#xff09;在UnityAssetStore中搜索Vuforia插件并添加到自己的资源中 网页地址&#xff1a;https://assetstore.unity.com/packages/templates/packs/vuforia-engine…

瑞芯微 RK 系列 RK3588 使用 ffmpeg-rockchip 实现 MPP 视频硬件编解码-代码版

前言 在上一篇文章中&#xff0c;我们讲解了如何使用 ffmpeg-rockchip 通过命令来实现 MPP 视频硬件编解码和 RGA 硬件图形加速&#xff0c;在这篇文章&#xff0c;我将讲解如何使用 ffmpeg-rockchip 用户空间库&#xff08;代码&#xff09;实现 MPP 硬件编解码。 本文不仅适…

Web前端界面开发

前沿&#xff1a;介绍自适应和响应式布局 自适应布局&#xff1a;-----针对页面1个像素的变换而变化 就是我们上一个练习的效果 我们的页面效果&#xff0c;随着我们的屏幕大小而发生适配的效果&#xff08;类似等比例&#xff09; 如&#xff1a;rem适配 和 vw/vh适配 …

OpenCV基础:视频的采集、读取与录制

从摄像头采集视频 相关接口 - VideoCapture VideoCapture 用于从视频文件、摄像头或其他视频流设备中读取视频帧。它可以捕捉来自多种源的视频。 主要参数&#xff1a; cv2.VideoCapture(source): source: 这是一个整数或字符串&#xff0c;表示视频的来源。 如果是整数&a…

C++内存泄露排查

内存泄漏是指程序动态分配的内存未能及时释放&#xff0c;导致系统内存逐渐耗尽&#xff0c;最终可能造成程序崩溃或性能下降。在C中&#xff0c;内存泄漏通常发生在使用new或malloc等分配内存的操作时&#xff0c;但没有正确地使用delete或free来释放这块内存。 在日常开发过程…

Golang 简要概述

文章目录 1. Golang 的学习方向2. Golang 的应用领域2.1 区块链的应用开发2.2 后台的服务应用2.3 云计算/云服务后台应用 1. Golang 的学习方向 Go 语言&#xff0c;我们可以简单的写成 Golang 2. Golang 的应用领域 2.1 区块链的应用开发 2.2 后台的服务应用 2.3 云计算/云服…

51c自动驾驶~合集46

我自己的原文哦~ https://blog.51cto.com/whaosoft/13050104 #世界模型会是L3自动驾驶的唯一解吗 三维空间占有率&#xff08;3D Occupancy&#xff09;预测的目的是预测三维空间中的每个体素是否被占有&#xff0c;如果被占有&#xff0c;则对应的体素将被标记。3D Semant…

从CentOS到龙蜥:企业级Linux迁移实践记录(龙蜥开局)

引言&#xff1a; 在我们之前的文章中&#xff0c;我们详细探讨了从CentOS迁移到龙蜥操作系统的基本过程和考虑因素。今天&#xff0c;我们将继续这个系列&#xff0c;重点关注龙蜥系统的实际应用——特别是常用软件的安装和配置。 龙蜥操作系统&#xff08;OpenAnolis&#…

WMS仓库管理系统,Vue前端开发,Java后端技术源码(源码学习)

一、项目背景和建设目标 随着企业业务的不断扩展&#xff0c;仓库管理成为影响生产效率、成本控制及客户满意度的重要环节。为了提升仓库作业的透明度、准确性和效率&#xff0c;本方案旨在构建一套全面、高效、易用的仓库管理系统&#xff08;WMS&#xff09;。该系统将涵盖库…

Docker Search失败,但是Pull成功的解决方法(环境:腾讯云服务器CentOS7系统安装Docker)

Docker Search失败&#xff0c;但是Pull成功的解决方法&#xff08;环境&#xff1a;腾讯云服务器CentOS7系统安装Docker&#xff09; 背景解决思路 背景 在安装完成Docker后&#xff0c;成功启动Docker(Systemctl start Docker)&#xff0c;使用搜索镜像命令&#xff08;Dock…

ClickHouse vs StarRocks 选型对比

一、面向列存的 DBMS 新的选择 Hadoop 从诞生已经十三年了&#xff0c;Hadoop 的供应商争先恐后的为 Hadoop 贡献各种开源插件&#xff0c;发明各种的解决方案技术栈&#xff0c;一方面确实帮助很多用户解决了问题&#xff0c;但另一方面因为繁杂的技术栈与高昂的维护成本&…

慧集通(DataLinkX)iPaaS集成平台-业务建模之业务对象(二)

3.UI模板 当我们选择一条已经建好的业务对象点击功能按钮【UI模板】进入该业务对象的UI显示配置界面。 右边填写的是UI模板的编码以及对应名称&#xff1b;菜单界面配置以业务对象UI模板编码获取显示界面。 3.1【列表-按钮】 展示的对应业务对象界面的功能按钮配置&#xff1…

TCL小蓝翼新风空调亮相CES2025,斩获智慧新风技术创新大奖

1月7日-11日&#xff0c;被称为“科技界春晚”的CES 2025&#xff08;国际消费类电子产品展览会&#xff09;在美国拉斯维加斯举行。 本届CES&#xff0c;TCL小蓝翼新风空调更是惊艳亮相TCL展区&#xff0c;以领先的健康新风及AI技术&#xff0c;斩获CES2025 智慧新风技术创新…