VScode设置C/C++编译环境详解

2023-05-16

一:下载安装C/C++编译器

在windows下有很多集成的编译器,我们只是需要使用gcc.exe 编译而已,所以我们可以随便下,这里推荐使用:MinGW:(附下载官网地址,可直接安装)

https://mirrors.gigenet.com/OSDN//mingw/68260/mingw-get-setup.exe

一直continue,比较关键的两步:

 在菜单栏中选择Installation -> Apply Changes

 安装完成后,需要设置环境变量,让cmd可以找到gcc.exe

在path里添加进D:\software\MinGW\bin 即可

 二:VScode里安装插件

下载.exe的安装版,直接安装

(1)切换中文版

安装完成后,如果想要改成中文的名字

 (2)配置C/C++插件

三:VScode里配置环境(将外部的环境和vscode连接一下)

Ctrl+Shift+P调出命令面板,输入C/C++

配置编译器的路径IntelliSense的模式就可以了

 

配置完成关闭后,会在.vscode里出现如下的json文件(显示了之前的配置,编译器的路径---有就有,没有就没有,不需要修改这个东西) 。

 四:运行和调试C/C++文件

(1)终端手动运行

我们此时就可以直接在终端运行

(2)软件运行C/C++文件

自动运行C/C++文件 需要构建配置任务,即构建指令来运行 gcc 这种命令行指令

两种方法:

第一种:

 

第二种:Ctrl+Shift+P调出命令面板,输入tasks

 再选择

 结果

此时会出现一个名为tasks.json的配置文件,第一种方法中,我们直接运行后,会在控制台输出以下的界面:(此时控制台 显示文件运行结果,终端不会)

 

(3)调试

 所谓调试,就是可以用过打断点来Debug,在调试控制台会输出单步调试的结果。

 

上面的直接调试不正规,一般是需要先配置调试文件:

 (1)一般直接选后上角的调试C/C++文件 ,选中选择C++(GDB/LLDB):就会自动在.vscode目录下出现launch.json

 注:如果没有上述出现,可以点下面的:

 (2)我们发现launch.json是空的,笔者将别人的配置复制过来了

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [

        {
            "name": "(gdb) Launch",
            "preLaunchTask": "g++.exe build active file",//调试前执行的任务,就是之前配置的tasks.json中的label字段
            "type": "cppdbg",//配置类型,只能为cppdbg
            "request": "launch",//请求配置类型,可以为launch(启动)或attach(附加)
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",//调试程序的路径名称
            "args": [],//调试传递参数
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,//true显示外置的控制台窗口,false显示内置终端
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\mingw-w64\\x86_64-8.1.0-win32-seh-rt_v6-rev0\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

  五:run code代码

Code RUNNER: 轻松编译、运行和调试单个或多个C/C++文件

(1)安装Code Runner插件

 (2)run code

可以安装Code Runner插件:快速运行调试代码,无需配置繁杂的环境。

 安装完成之后就可以用啦!

直接点击:

会发现 显示乱码。一般我不喜欢在这里输出,可以更改设置在终端输出。

右键扩展设置,run in terminel 打勾即可。

再次运行查看:显示正常

   六:设置的更改以及乱码问题 

有时候需要手动设置一下:

1. 插件的设置

我们扩展栏找到安装好的插件,右键扩展设置就可以直接设置相关的参数,例如Code runner的在终端显示等等。

2. vscode整体的settings配置

 使用快捷键:ctrl+shift+p 调出命令窗口,输入settings:这时会有四个选项:

 其中:第二个default settings我们无法自己更改,因此一般不选。

              第一个user settings我们可以手动增加配置参数。

                第四个就是打开UI界面,带有下拉框的设置:

                     第三个就是打开工作区workspace的设置(当前代码路径下.vscode下的settings,一般不设置都是空的。

: 默认的是使用Default Settings 和 User Settings):其实就是一个包含关系,

Default Settings范围最广,User Settings更改当前用户,Workspace Settings只更改当前代码的配置。

 3. vscode乱码问题

(1)GBK 全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification)
(2)UTF-8(8-bit Unicode Transformation Format) 是一种针对Unicode的可变长度字符编码,又称万国码,由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文)。

:编码格式建议统一保存为UTF-8
 

问题1:打开一个代码,会出现中文乱码?

回答:这是因为我们的软件默认使用UTF-8的格式打开,可能这个代码文件保存的格式不是UTF-8,有可能是GBK,所以我们切换成GBK格式打开就可以了。

问题2:为什么UTF-8代码运行后,在终端会输出汉字乱码?

回答:这是终端显示的问题,一般的cmd默认是GBK编码,但是我们的输出是UFT-8的格式,所以不一致,因此需要更改cmd编码的格式为UTF-8

首先输入chcp查看编码格式,其中GBK2312 的代码页编号是 936。

我们将控制台的运行进行参数设定,统一为UTF8,打开user设置,setting.json中设置加入:

"terminal.integrated.shellArgs.windows": ["/K chcp 65001 >nul"],

:/K chcp 65001 >nul 的含义是在运行cmd的时候将编码设置为 65001;
其中>nul 是避免在控制台输出修改编码的信息,否则会输出 active code page: 65001;

如下:输出正确!

总结

(1)要保持输入输出的统一性,输入的代码是UTF-8,那么输出显示的格式也必须是UTF-8,否则就会出现乱码问题。

(2)VScode打开文件默认选择UTF-8,设置"files.autoGuessEncoding": true,令VS Code自动选择合适编码打开文件;如下所示在Settings UI里面也可以设置。

(3)通过命令行或运行键运行程序时,若是UTF-8编码会造成中文乱码,需要在运行命令中添加“chcp 65001”,或者将UTF-8编码转换成GB2312编码;

(4)调试的编码格式,已经默认为UTF-8了。

(5)其他问题参考如下链接:

vscode:四个乱码问题及解决方法_Balaaam的博客-CSDN博客_vscode中文乱码怎么解决

问题3:如果我不想设置上面的终端编码格式,就让他默认GBK,那么怎么能正常显示中文?

答:有两种方法,第一种就是把UTF-8文件保存在GBK代码文件,这样运行的结果也是GBK编码的了,第二种方法就是在编译时设置编码格式,把UTF-8代码编译出GBK编码输出,可以在user settings的配置文件里加入如下代码:

"code-runner.executorMap": {
		 "c": "cd $dir && gcc -fexec-charset=GBK $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
         "cpp": "cd $dir && g++ -fexec-charset=GBK $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
    },

: 所以有人觉得UTF-8代码输出乱码很麻烦,直接将源代码保存为GBK也是可以理解的。 

同时例如PUTTY等一些远程服务器的软件,可以在软件里设置编码的显示方法,也是很简单的。 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VScode设置C/C++编译环境详解 的相关文章

  • Python彩蛋源码分析(二)

    简介 非常高兴大家能够订阅这个专栏 在这里我将会给大家分享一些Python相关源码的剖析 在接下来的这段日子里 我会一同带各位pythonista探索Python的奥秘 hello world hello world hello pytho
  • Python源码剖析专栏总览

    简介 非常高兴大家能够订阅这个专栏 在这里我将会给大家分享一些Python相关源码的剖析 在接下来的这段日子里 我会一同带各位pythonista探索Python的奥秘 将会分析一些源码的构思设计以及这些工具的使用方法 彩蛋篇 Easter
  • maven笔记小抄

    settings xml settings xml位置 标签指定本地下载的依赖在本地的保存位置 user home m2 repository表示C Users username m2 settings xml idea中File Sett
  • linux 下 tcpdump 详解 后篇(自己实现抓包过滤)

    一 概述 在了解了tcpdump的原理后 xff0c 你有没有想过自己去实现抓包过滤 xff1f 可能你脑子里有个大概的思路 xff0c 但是知道了理论知识 xff0c 其实并不能代表你完全的理解 只要运用后 xff0c 你才知道哪些点需要
  • Python字节码分析(一)

    简介 非常高兴大家能够订阅这个专栏 在这里我将会给大家分享一些Python相关源码的剖析 在接下来的这段日子里 我会一同带各位pythonista探索Python的奥秘 Pyc文件 简介 当在文件被当成模块导入时才会生成pyc文件 pyc文
  • Python基本类型(一)

    简介 非常高兴大家能够订阅这个专栏 在这里我将会给大家分享一些Python相关源码的剖析 在接下来的这段日子里 我会一同带各位pythonista探索Python的奥秘 basic data types in python Python中的
  • xmlrpc源码解读(一)

    简介 非常高兴大家能够订阅这个专栏 在这里我将会给大家分享一些Python相关源码的剖析 在接下来的这段日子里 我会一同带各位pythonista探索Python的奥秘 将会分析一些源码的构思设计以及这些工具的使用方法 一个简单的RPC实例
  • Python代码整洁之道勘误

    简介 本博文是对 lt Python代码整洁之道 gt 一书的一些错误进行矫正 这本书英文名字是 lt Clean Python Elegant Coding int Python gt 这本书的作者是Sunil Kapil 这本书错误非常
  • 自己动手写strcat函数

    char catstr char a char b char x 61 a while a 61 39 0 39 a 43 43 while b 61 39 0 39 a 61 b a 43 43 b 43 43 a 61 39 0 39
  • 为什么C++开发不需要安装STL库

    如果交叉编译工具链的路径已经添加到path变量中的话 xff0c 可以直接使用 v即可查看 xff0c 比如我的是arm linux gnueabihf g 43 43 那么直接arm linux gnueabihf g 43 43 v或者
  • 为什么要内存对齐

    为什么要内存对齐 xff1f 很多CPU是从对齐的地址开始加载数据 xff0c 外部总线从内存一次获取的数据往往不是1比特 xff0c 而是4比特或8比特或更多 xff0c 与数据总线带宽有关 比如有一个int数据类型 xff0c 其分配的
  • marlin2.0.x 固件相关配置文档说明

    主要目的 了解对应参数的作用 xff0c 以优化3D打印机的打印效果 具体分析 配置文件有两个 Configuration h 包含硬件核心 语言和控制器的设置 xff0c 以及最常见的功能和组件的设置 xff0c 主要配置的地方 Conf
  • c++容器--vector deque list set map stack queue特性及其选取准则

    1 vector xff08 连续的空间存储 可以使用 操作符 xff09 快速的访问随机的元素 xff0c 快速的在末尾插入元素 xff0c 但是在序列中间岁间的插入 xff0c 删除元素要慢 xff0c 而且如果一开始分配的空间不够的话
  • 网络、串口之应用层通讯协议编订

    一种二进制通信协议 消息长度 BYTES 结构描述Header4SyncBytes格式 xff1a 0x09 0x6f 0x01 0x01 xff0c 表示不同设备之间的交互Header4FullMessageLength数据总长度 xff
  • STM32基于串口接收缓存非空中断(RXNE)和空闲中断的串口转发功能

    STM32基于串口接收缓存非空中断 xff08 RXNE xff09 和空闲中断的串口转发功能 0 实验背景 本实验的目的是实现串口的双向转发 xff0c 即向串口1写入数据后 xff0c 串口2及时输出串口1收到的数据 xff1b 向串口
  • Ubuntu16.04 中 搭建Janus Server

    Ubuntu16 04 局域网中搭建Janus Server janus简介 Janus是WebRTC 服务器端的开源项目 xff0c 官方对其定义是一个WebRTC服务器端 xff0c 支持的功能比较丰富 xff0c 通过core模块来支
  • 堆栈溢出一般是由什么原因导致

    背景 全局变量存放在静态存储区 位置是固定的 局部变量在栈空间 栈地址是不固定的 栈 xff1a 就是那些由编译器在需要的时候分配 xff0c 在不需要的时候自动清楚的变量的存储区 里面的变量通常是局部变量 函数参数等 堆 xff1a 就是
  • 简单明了的蓝牙服务及UUID介绍

    什么是蓝牙 蓝牙 xff0c 是一种支持设备短距离通信 xff08 一般10m内 xff09 的无线电技术 xff0c 能在包括移动电话 PDA 无线耳机 笔记本电脑 相关外设等众多设备之间进行无线信息交换 利用 蓝牙 技术 xff0c 能
  • 深入详细理解矩阵 (矩阵的加减乘、转置、共轭、共轭转置)

    简介 矩阵 英文名Matrix 在数学名词中 xff0c 矩阵用来表示统计数据等方面的各种有关联的数据 这个定义很好地解释了Matrix代码制造世界的数学逻辑基础 矩阵是数学中最重要的基本概念之一 xff0c 是代数学的一个主要研究对象 x
  • 无线模块的参数介绍和选型要点

    01 通信频点 通信频点 xff1a 无线模块在工作的时候向外辐射出去的电波频率 xff1b 无线串口模块常用的频点大致可以分为170MHz 230MHz 315MHz 433MHz 490MHz 780MHz 868MHz 915MHz

随机推荐

  • 使用freertos如何确定分配堆栈空间大小

    前言 运行freertos系统的大部分都是资源有限的MCU xff0c 所以对于ram我们都要考虑尽量的节省 xff0c 避免资源浪费 xff0c 从而也可以针对项目选择性价比更好的mcu 关系分析 首先要配置freertos的堆 heap
  • windows从零搭建googletest之c++测试工程

    简介 googletest xff08 也称gtest xff09 是由Google测试技术团队开发的测试框架 为c c 43 43 代码提供了一套优秀的单元测试解决方案 本文介绍使用googletest在windows下从零搭建自己的单元
  • c++ 常用转换vector<uint8_t> 转string

    std span class token double colon punctuation span vector span class token operator lt span span class token keyword uin
  • c语言解析协议常用套路

    简介 协议定义username len value while 读取 2个switch case解析 读取value 代码示例 span class token keyword struct span span class token cl
  • c++模板 --- 模板的嵌套

    简介 明白类型是什么即可 xff0c 可以适当运用using语法起别名 简化代码 一 函数模板嵌套 span class token keyword template span span class token operator lt sp
  • DWA算法详解

    首先在V m V d的范围内采样速度 xff1a allowable v 61 generateWindow robotV robotModel
  • C++OpenCV实现YOLO算法对目标进行检测实战

    基本概念 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 加载darknet框架的YoloV4模型做目标检测 OpenCV DNN模块支持常见深度学习框架如TensorFlowCaffe Darknet等 对
  • 使用GooSeeker软件进行爬虫

    一 使用GooSeeker软件进行爬虫 xff0c 它是进行读取大量数据的 xff0c 都出来的数据是xml格式的 xff0c 可以通过office excel将xml格式转化成表格形式 1 爬虫取数据 xff1a 1 xff09 先要在网
  • 51单片机--堆栈

    堆栈的作用是用在调用子程序或中断程序时保护现场 xff0c 因为51单片机的寄存器是十分有限的 xff0c 而相对来说普通数据存储器更充足 xff0c 通过入栈将寄存器中的内容临时保存到堆栈中 xff08 普通数据存储器 xff09 xff
  • Git-命令行-使用 Tag 标记你的代码

    前言 正文开始之前 xff0c 我想我们需要弄明白几个问题 xff1a tag 是什么 xff1f 使用tag 的好处 xff1f tag 和 branch 的区别以及使用场景 xff1f tag 是什么 xff1f tag 翻译过来是标签
  • 光流Zoom In and Out开发记录

    简介 2018年7月 xff0c 合作伙伴提出了一个想法 使用光流算法估计相机前后移动 经典的光流算法 xff08 Lukas Kanade算法 xff09 适用于相机左右和上下移动 xff0c 但是在相机前后移动时 xff0c 虽然各个像
  • 关于电子设计大赛无人机题的学习笔记(2)飞控代码分析和高精度IMU传感器的使用

    飞控代码分析和高精度IMU传感器的使用 最近着急备赛很多文档只是处于零零散散状态没办法细节的整理出来专门放一份 xff0c 等比赛结束会统一整理 xff0c 现在只能先放一些研发过程中的技术文档上来了 目前我们的调试进度是 xff0c 稳定
  • 关于电子设计大赛无人机题的学习笔记(3)常用设备总线的使用方法(IIC)

    关于电子设计大赛无人机题的学习笔记 3 常用设备设备总线的使用方法 IIC xff09 1 吐槽及日志 首先 电赛因为疫情原因推迟了 xff0c emmm在我看来跟取消了差不了太多 xff0c 这一波小系列的学习记录暂时只能在第三篇就停止更
  • undefined reference to `pthread_create‘问题的解决 cmake新方法解决

    最近在写相机SDK xff0c 测试中出现了一个小问题undefined reference to 96 pthread create 39 其实是缺少库文件 网上大部分介绍使用 lpthread xff0c 但是这个是老版本了 xff0c
  • POST请求返回:401 Unauthorized

    Postman 做接口测试 xff0c 提交请求后 xff0c 模拟获取数据 xff0c 输入入参正确时 xff0c 却返回status 401 Unauthorized 原因 xff1a 是我的token有误 xff0c token是一串
  • Django从header请求头中的Authorization获取token验证数据

    前言 之前使用django开发api接口时 xff0c 约定是要每次请求都要带token这个参数 xff0c 这样很不方便 xff0c 最近学了vue xff0c 也使用了axios xff0c 发现在axios拦截器中可以设置每次请求头中
  • char类型的数字转int

    char的本质 xff1a char The char data type is a single 16 bit Unicode character It has a minimum value of 39 u0000 39 or 0 an
  • Android串口通信

    编前记 今天在刷博客 郭老师 的时候评论区看见有人在聊单片机的串口通信 xff0c 刚好之前做过一个项目通过NFC读取IC门禁卡片的项目所以拿出来分享 复习 一下 xff0c 先讲了解一下什么是串口通信 xff1a 串口通信 xff08 S
  • Studio One 5机架设置一键切换效果通道

    Studio One是当前主流的直播机架软件 xff0c 操作非常方便 xff0c 但是呢默认情况下 xff0c 要切换效果时 xff0c 只能手动关闭一个效果的后 xff0c 再开另一个效果 xff0c 切换效果有点不方便 现在孤狼分享S
  • VScode设置C/C++编译环境详解

    一 xff1a 下载安装C C 43 43 编译器 在windows下有很多集成的编译器 xff0c 我们只是需要使用gcc exe 编译而已 xff0c 所以我们可以随便下 xff0c 这里推荐使用 xff1a MinGW xff1a x