VSCode C/C++ 环境搭建指南

news2025/3/20 5:33:46

一、前言

Visual Studio Code(简称 VSCode)是一款轻量级且功能强大的跨平台代码编辑器,凭借丰富的插件生态和高度的可定制性,深受开发者喜爱。对于 C/C++ 开发者而言,在 VSCode 中搭建开发环境,能够获得灵活且高效的编程体验。接下来,将为你详细介绍在不同操作系统下,如何在 VSCode 中搭建 C/C++ 开发环境。

二、安装 VSCode

VSCode 支持 Windows、Linux 和 macOS 等主流操作系统,你可以通过以下步骤进行安装:

  1. 访问官网:打开VSCode 官方网站。
  2. 下载安装包:根据你的操作系统,点击对应的下载按钮(如 “Download for Windows”“Download for macOS”“Download for Linux”) ,下载适合你系统的安装包。
  3. 安装软件
    • Windows:下载完成后,双击.exe文件,按照安装向导的提示进行操作,你可以选择安装目录,也可使用默认安装目录,一路点击 “下一步” 直至安装完成。
    • macOS:下载的是.dmg文件,打开后,将 VSCode 图标拖动到 “应用程序” 文件夹即可完成安装。
    • Linux:不同的 Linux 发行版安装方式略有不同。以 Ubuntu 为例,下载.deb包后,在终端中使用sudo dpkg -i <下载的.deb文件名>命令进行安装;若下载的是压缩包,则解压后找到可执行文件运行。

三、安装 C/C++ 编译器

(一)Windows 系统

  1. MinGW-w64
    • 下载:访问 MinGW-w64 官网https://sourceforge.net/projects/mingw-w64/ ,下载适合你系统的版本(一般 64 位系统选择x86_64 ,32 位系统选择i686)。
    • 安装:下载完成后,解压压缩包,记住解压后的路径(例如C:\mingw-w64)。
    • 配置环境变量:右键点击 “此电脑”,选择 “属性”,在弹出的窗口中点击 “高级系统设置”,再点击 “环境变量”。在 “系统变量” 中找到 “Path” 变量,点击 “编辑”,然后点击 “新建”,将C:\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin(路径根据你实际解压路径调整)添加进去,点击 “确定” 保存设置。
    • 验证安装:打开命令提示符(CMD),输入gcc -vg++ -v ,若能显示版本信息,说明安装成功。
  2. TDM-GCC
    • 下载:访问TDM-GCC官网 ,根据系统选择合适的安装包(如 64 位系统选择tdm64-gcc-10.3.0-2.exe) 。
    • 安装:双击安装包,按照安装向导的提示进行操作,一般保持默认设置,点击 “Next” 和 “Install” 即可完成安装。
    • 验证安装:在命令提示符中输入gcc --version ,若显示版本信息,则安装成功。

(二)macOS 系统

macOS 系统通常自带 Clang 编译器,你可以通过以下步骤验证:
打开终端,输入clang -v ,若能显示版本信息,说明已经安装。如果没有安装,可通过安装 Xcode Command Line Tools 来获取。在终端中输入xcode-select --install ,按提示操作即可完成安装。

(三)Linux 系统

大多数 Linux 发行版默认安装了 GCC 编译器。你可以在终端中输入gcc -v来验证是否安装。若未安装,可使用包管理器进行安装:

  • Ubuntu/Debian:在终端中输入sudo apt-get install gcc g++ 。
  • CentOS/RHEL:在终端中输入sudo yum install gcc gcc-c++ 。

四、安装必要的 VSCode 插件

打开 VSCode,点击左侧边栏的插件图标(或使用快捷键Ctrl+Shift+X ),在搜索框中搜索并安装以下插件:

  1. Chinese (Simplified) Language Pack for Visual Studio Code:将 VSCode 界面语言设置为简体中文,方便使用。
  2. C/C++ :由 Microsoft 提供的官方插件,为 VSCode 添加对 C/C++ 语言的全面支持,包括智能代码补全、语法高亮、调试等功能。
  3. Code Runner:安装后,可通过右键菜单中的 “Run Code” 选项,一键编译和运行 C/C++ 代码,无需手动在终端输入编译命令,提高开发效率。

五、配置 VSCode

(一)Windows 和 Linux 系统

  1. 创建工作文件夹:在本地创建一个文件夹用于存放 C/C++ 项目,例如C:\cpp_projects (Windows)或~/cpp_projects (Linux)。在 VSCode 中,点击菜单栏的 “文件” -> “打开文件夹” ,选择刚刚创建的文件夹。
  2. 配置 tasks.json 文件:按下Ctrl+Shift+P ,输入 “Tasks: Configure Task” ,选择 “C/C++: g++ build active file”(如果是 C 语言则选择 “C/C++: gcc build active file”)。这将在工作文件夹下的.vscode文件夹中生成一个tasks.json文件,其内容如下:
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "g++", // C语言使用“gcc”
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}.exe"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

这个文件定义了一个构建任务,使用g++(或gcc)编译器对当前打开的文件进行编译,并生成可执行文件。
3. 配置 launch.json 文件:按下F5进行调试,此时 VSCode 会提示配置调试环境,选择 “C/C++ (GDB/LLDB)” ,这将在.vscode文件夹中生成一个launch.json文件,内容如下:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "preLaunchTask": "build"
        }
    ]
}

该文件配置了调试会话,指定了要调试的程序路径、命令行参数等信息,并设置在调试前先执行tasks.json中定义的构建任务。

(二)macOS 系统

  1. 创建工作文件夹:同 Windows 和 Linux 系统,在本地创建一个用于存放项目的文件夹,并在 VSCode 中打开。
  2. 配置 tasks.json 文件:按下Ctrl+Shift+P ,输入 “Tasks: Configure Task” ,选择 “C/C++: clang++ build active file”(如果是 C 语言则选择 “C/C++: clang build active file”)。生成的tasks.json文件内容如下:
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "clang++", // C语言使用“clang”
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}
  1. 配置 launch.json 文件:按下F5进行调试,选择 “C/C++ (GDB/LLDB)” ,生成的launch.json文件内容如下:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "lldb",
            "preLaunchTask": "build"
        }
    ]
}

这里使用lldb作为调试器,与 macOS 系统的 Clang 编译器配合使用。

六、测试环境

在工作文件夹中创建一个新的 C/C++ 文件,例如hello.cpp(C++)或hello.c(C) ,输入以下测试代码:

C++ 示例

#include <iostream>
using namespace std;

int main() {
    cout << "Hello, World!" << endl;
    return 0;
}

C 示例

#include <stdio.h>

int main() {
    printf("Hello, World!\n");
    return 0;
}

保存文件后,你可以通过以下两种方式运行代码:

  • 使用 Code Runner 插件:右键点击代码编辑区域,选择 “Run Code” ,插件会自动编译并运行代码,在下方的输出窗口中显示结果。
  • 使用调试功能:按下F5 ,VSCode 会根据launch.jsontasks.json的配置,先编译代码,然后运行可执行文件,并在调试控制台中显示输出结果。如果设置了断点,程序会在断点处暂停,方便调试。

七、常见问题及解决方法

  1. 编译器未找到:如果在运行或调试时提示找不到编译器,首先确认编译器已正确安装且环境变量配置正确。在 Windows 系统中,可以在命令提示符中输入编译器命令(如gcc -v) ,检查是否能正常显示版本信息。若不能,重新检查环境变量配置。在 Linux 和 macOS 系统中,同样在终端中检查编译器命令是否可用。
  2. 调试配置不生效:检查launch.jsontasks.json文件的配置是否正确,特别是路径、命令和参数等信息。确保preLaunchTask指定的构建任务能够成功执行。
  3. 代码无法编译通过:仔细检查代码中的语法错误,VSCode 的 C/C++ 插件会在编辑过程中通过波浪线提示一些常见的语法问题。另外,注意头文件的包含是否正确,以及命名空间的使用等。
  4. 中文乱码问题:在 VSCode 中,点击左下角的齿轮图标,选择 “设置” ,在搜索框中输入 “files.encoding” ,确保其值为utf-8。如果问题仍然存在,检查文件的保存编码和编译器的字符集设置。

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

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

相关文章

Python 中下划线 “_” 的多面性:从变量到约定

# Python中下划线“_”的多面性&#xff1a;从变量到约定 在Python的语法体系里&#xff0c;下划线“_”看似毫不起眼&#xff0c;实则扮演着极为重要且多样化的角色。它不仅能作为普通变量参与编程&#xff0c;更在多个特殊场景下有着独特的用途与约定。深入理解下划线的各种…

Vue3项目开发:状态管理实践指南

# Vue3项目开发&#xff1a;状态管理实践指南 一、引言 背景介绍 在Vue项目中&#xff0c;状态管理是一个非常重要的话题。合理的状态管理能够帮助我们更好地组织和管理数据&#xff0c;提升项目的可维护性和可扩展性。本文将深入探讨Vue3项目中状态管理的最佳实践&#xff0c;…

数据结构-------栈

顺序栈&#xff1a; 一、数据结构定义 数据元素 DATATYPE typedef struct person {char name[32];char sex;int age;int score; } DATATYPE;顺序栈结构 SeqStack typedef struct list {DATATYPE *head; // 栈空间首地址int tlen; // 栈总容量&#xff08;total leng…

机器学习概要

文章目录 一、什么是机器学习 二、机器学习的种类 1. 有监督学习 2. 无监督学习 3.强化学习 三、机器学习的应用 四、机器学习的步骤 1. 数据的重要性 2. 数据和学习的种类 3. 可视化 一、什么是机器学习 机器学习指的是计算机根据给定的问题、课题或环境进行学习&a…

【LangChain入门 2 Model组件】开始!LLM Models简单对话

文章目录 一、使用langchain_ollama二、采用DeepSeek的API三、Model 介绍3.1 OllamaLLM 预训练模型3.2 ChatOllama 聊天预训练模型3.3 OllamaEmbeddings 实现一个helloworld&#xff0c;跑通一个简单的对话。 后面章节会正式介绍LangChain的各个功能。 后台llm的端口可以任意选…

C++20 中线程管理与取消机制的深度剖析

文章目录 std::jthread&#xff1a;更智能的线程管理背景与优势构造函数与 std::stop_token 的集成 std::stop_token、std::stop_source 和 std::stop_callback&#xff1a;灵活的取消机制std::stop_token&#xff1a;取消请求的指示器std::stop_source&#xff1a;取消请求的发…

Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析

Vue3 核心特性解析&#xff1a;Suspense 与 Teleport 原理深度剖析 一、Teleport&#xff1a;突破组件层级的时空传送 1.1 实现原理图解 #mermaid-svg-75dTmiektg1XNS13 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…

FPGA——实现LED流水灯

文章目录 一、Quartusll_18.1和VS Code软件的关联二、DE2-115的时钟电路三、流水灯的分层次设计四、总结 一、Quartusll_18.1和VS Code软件的关联 1.先打开Quartus II 软件&#xff0c;然后选择菜单栏“Tools”下的“Options…”。 2.点击“Options…”&#xff0c;在弹出的对…

Excel 小黑第12套

对应大猫13 涉及金额修改 -数字组 -修改会计专用 VLOOKUP函数使用&#xff08;查找目标&#xff0c;查找范围&#xff08;F4 绝对引用&#xff09;&#xff0c;返回值的所在列数&#xff0c;精确查找或模糊查找&#xff09;双击填充柄就会显示所有值 这个逗号要中文的不能英…

滚动元素的新api

点击的时候需要双重视图滚动 itemClick(id) {// 滚动到对应位置this.$nextTick(() > {// 找到对应 id 在 initList2 中的索引const index this.initList2.findIndex((item) > item.id Number(id));if (index ! -1) {// 获取所有菜单项const menuItems document.queryS…

多机调度问题(C语言)

代码如下&#xff1a; #include<stdio.h> #include<stdlib.h>int compare(void* a, void* b)//比较函数&#xff0c;用于qsort按处理时间从大到小排序 {return *(int*)a - *(int*)b; }int LPT(int jobs[], int n, int m)//多机调度问题的LPT算法 {qsort(jobs, n, …

烽火HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包及注意点说明

之前发布过这个固件包&#xff0c;关于烽火HG680-KA&#xff0f;HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包详细说明一下&#xff0c;汇总总结一些常遇到的情况&#xff0c;这次固件会分开发布&#xff0c;以免混淆。 上一个帖子地址&#xff1a;烽火HG680-KA&#xff0…

996引擎 - 红点系统

996引擎 - 红点系统 总结NPC 红点(TXT红点)Lua 红点1. Red_Point.lua2. UI_Ex.lua参考资料以下内容是在三端 lua 环境下测试的 总结 红点系统分几个部分组成。 M2中设置变量推送。 配置红点表。 Envir\Data\cfg_redpoint.xls 2.1. UI元素中找到ID填写 ids 列。 主界面挂载…

3.17BUUCTF练习day1

BUUCTF练习day1 [极客大挑战 2019]EasySQL1&#xff08;字符型&#xff0c;账号密码型&#xff0c;get型&#xff09; 判断闭合方式 在用户名输入1‘&#xff0c;此时密码先输入任何数字时&#xff0c;出现语法错误 说明闭合方式为单引号闭合&#xff0c;在判断完闭合方式后…

【贪心算法】柠檬水找零

1.题目解析 860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 2.讲解算法原理 分情况讨论 5---》直接收下 10---》找五元&#xff0c;收下 20----》105△ ----》555 由于5元更有用&#xff0c;则尽可能保留5元 3.代码 class Solution {public boolean lemonadeCh…

黑马跟学.苍穹外卖.Day08

黑马跟学.苍穹外卖.Day08 苍穹外卖-day8课程内容1. 工作台1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码导入1.2.1 Controller层1.2.2 Service层接口1.2.3 Service层实现类1.2.4 Mapper层 1.3 功能测试1.3.1 接口文档测试1.3.2 前后端联调测试 1.4 代码提交 2. Ap…

ABAP语言的动态编程(4) - 综合案例:管理费用明细表

本篇来实现一个综合案例&#xff1a;管理费用明细表。报表在实际项目中&#xff0c;也有一定的参考意义&#xff0c;一方面展示类似的报表&#xff0c;比如管理费用、研发费用等费用的明细&#xff0c;使用业务比较习惯的展示格式&#xff1b;另一方面正好综合运用前面学习的动…

通过Geopandas进行地理空间数据可视化

目录 引言 安装与导入 数据加载与探索 数据预处理 基本地图可视化 添加其他数据到地图上 空间分析与查询 地图叠加与分组 空间缓冲区 交互式地图可视化 实际应用案例 城市规划 环境监测 结论 引言 在数据科学领域,地理空间数据可视化扮演着至关重要的角色。它不…

在Vue3中使用Echarts的示例

1.常用-引用ts文件方式 1.1 导出ts文件-一个简单的柱状图 export const baseBarChart (xdata: string[], data: number[][], legendData: string[]) > {if (data.length 0) {return noData;}// 定义颜色数组const color [#00CCCC,#FF9900,#1677DC,#FF6666,#B366FF,#666…

GHCTF web方向题解

upload?SSTI! import os import refrom flask import Flask, request, jsonify,render_template_string,send_from_directory, abort,redirect from werkzeug.utils import secure_filename import os from werkzeug.utils import secure_filenameapp Flask(__name__)# 配置…