win10 VScode配置GCC(MinGW)

Python微信订餐小程序课程视频

https://edu.csdn.net/course/detail/36074

Python实战量化交易理财系统

https://edu.csdn.net/course/detail/35475
前提

  1. 安装 Visual Studio Code
  2. 安装 C/C++ 扩展 for VS Code 也可以在vscode的extension界面搜索’c’查找插件安装

image-20220222160721506
3. 获取最新的 Mingw-w64 ,或者通过 MSYS2 安装
4. 添加 Mingw-w64的bin文件夹路径到系统环境变量中,bin路径取决于Mingw-w64的安装路径,C:\XXX\XXX\mingw64\bin示例,步骤如下

1. 在底栏的搜索框中,搜索“设置”,打开win设置程序
2. 在设置中,搜索系统环境变量
3. 选择系统中的`path`变量(个人用户的也可以),点击编辑
4. 新建一个环境变量,将Mingw-w64的bin文件夹路径添加进去。
5. 点击确定保存更新路径,需要重新打开cmd才能路径生效
  1. 检查是否成功安装,打开cmd,输入
gcc -v

如果没有成功输出版本号,那说明安装不成功

Hello World!

创建一个空文件夹projects用来存放vscode项目文件。再projects中创建一个子文件夹helloworld,然后在vscode中打开这个helloworld文件夹。

可以在cmd完成这项操作:

mkdir projects
cd projects
mkdir helloworld
cd helloworld
code .

code .命令是指在此文件夹中打开vscode。

添加源文件

添加helloworld.c


复制下面代码,添加到文件中

#include int main()
{printf("Hello world!");return 0;
}

编译

这一步要创建tasks.json,文件是用于告诉vs code怎么编译程序

在主菜单中,选择 Terminal > Configure Default Build Task. 选择一个编译器点击,c语言就选择gcc,c++就选择g++


选择之后,tasks.json会被创建在.vscode文件夹中。文件内容与下文相似

{"tasks": [{"type": "cppbuild","label": "C/C++: gcc.exe build active file","command": "C:/msys64/mingw64/bin/gcc.exe","args": ["-g", "${file}", "-o", "${fileDirname}\\${fileBasenameNoExtension}.exe"],"options": {"cwd": "${fileDirname}"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true},"detail": "compiler: C:/msys64/mingw64/bin/gcc.exe"}],"version": "2.0.0"
}

command: 指定编译器的路径

args: 指定将传递给gcc的命令行参数,这些参数必须按照编译器期望的顺序指定。这些参数告诉gcc获取活动文件(${file}),先编译它,然后在当前文件夹(${fileDirname})创建一个可执行文件,其名字与活动文件一样,但是后缀是.exe。(${fileBasenameNoExtension}.exe)

label: 这是你在任务列表中看到的,可以随便给它起个名字。

"isDefault": true 指定该任务将在按下Ctrl+Shift+B时运行,只是为了方便使用,也可以在 Terminal: Run Build Task 中编译文件

运行编译

  1. 回到helloworld.c,可以通过Ctrl+Shift+B快捷键编译,也可以点击Terminal: Run Build Task编译
  2. 编译成功之后,会在集成的terminal中输出类似下图的信息


3. 点击任何键退出界面。运行 dir 命令将会看到新创建的 helloworld.exe

可以在terminal中运行exe文件 (helloworld.exe 或者 .\helloworld.exe)

图片仅作参考,本实例实际运行输出为Hello world!

编辑json文件

使用"${workspaceFolder}\\*.c" 代替 ${file},编译时会编译当前文件夹中所有的.c文件,输出文件名也要修改为"${fileDirname}\\${fileBasenameNoExtension}.exe"

debug

在此操作中会创建一个launch.json文件。当你按F5调试程序时,VS Code需要使用launch文件来启动GDB调试器。

  1. 在主菜单中,选择Run > Add Configuration… 然后选取 C++ (GDB/LLDB)
  2. 然后再选取 gcc.exe build and debug active file(c语言就选gcc,c++就选取g++)

完成操作后会创建一个launch.json文件,内容与下方类似

{"version": "0.2.0","configurations": [{"name": "g++.exe - Build and debug active file","type": "cppdbg","request": "launch","program": "${fileDirname}\\${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"MIMode": "gdb","miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "C/C++: g++.exe build active file"}]
}

program: 设置指定要调试的程序

stopAtEntry: 默认为false,为true时,debug时会在main函数开头设置断点

preLaunchTask: 设置用于指定在启动前要执行的任务,确保与tasks.jsonlabel保持一致

C/C++ configurations

如果想要对C/C++扩展的拥有更多的控制权,需要创建一个c_cpp_properties.json文件。这将允许你改变设置,如编译器的路径,包括路径,c++标准(默认是c++ 17)以及更多。

  1. 使用快捷键Ctrl+Shift+P,搜索C/C++: Edit Configurations (UI)


2. 点击就会打开设置界面。人为改变设置,就会记录在c_cpp_properties.json文件中

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

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

相关文章

复制构造函数的用法及出现迷途指针问题

复制构造函数利用下面这行语句来复制一个对象: A (A &a) 从上面这句话可以看出,所有的复制构造函数均只有一个参数,及对同一个类的对象的引用 比如说我们有一个类A,定义如下: ?12345678910class A{public:A(int i…

Linux下压缩某个文件夹(文件夹打包)

为什么80%的码农都做不了架构师?>>> tar -zcvf /home/xahot.tar.gz /xahot tar -zcvf 打包后生成的文件名全路径 要打包的目录 例子:把/xahot文件夹打包后生成一个/home/xahot.tar.gz的文件。 zip 压缩方法: 压缩当前的文件夹 zi…

解决Warning: Cannot modify header information - headers already sent b...

解决Warning: require(E:\testwwwroot\cc06\wp-admin/wp-includes/compat.php) [function.require]: failed to open stream: No such file or directory in E:\testwwwroot\cc06\wp-admin\wp-settings.php on line 246Fatal error: require() [function.require]: Failed open…

GoJS 使用笔记

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 作为商业软件,GoJs很容易使用,文档也很完备,不过项目中没有时间系统地按照文档学习&…

do while的使用

while循环:while(条件){循环体;} do while循环:do{循环体;}while(条件); //注意do while 有分号 while循环和do while循环只有一个差别,就是:while循环先判断条件,成立才做循环体;do while循环则是先做循环…

Android学习笔记:TabHost 和 FragmentTabHost

2019独角兽企业重金招聘Python工程师标准>>> Android学习笔记:TabHost 和 FragmentTabHostTabHost命名空间:android.widget.TabHost初始化函数(必须在addTab之前调用):setup(); 包含两个子元素:…

转HTML、CSS、font-family:中文字体的英文名称

宋体 SimSun 黑体 SimHei 微软雅黑 Microsoft YaHei 微软正黑体 Microsoft JhengHei 新宋体 NSimSun 新细明体 PMingLiU 细明体 MingLiU 标楷体 DFKai-SB 仿宋 FangSong 楷体 KaiTi 仿宋_GB2312 FangSong_GB2312 楷体_GB2312 KaiTi_GB2312 宋体:SimSuncss中中文字体…

PostgreSQL VACUUM 之深入浅出 (二)

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 AUTOVACUUM AUTOVACUUM 简介 PostgreSQL 提供了 AUTOVACUUM 的机制。 autovacuum 不仅会自动进行 VACUUM,也…

基本概念-数据类型

参考:http://edu.51cto.com/roadmap/view/id-59.html5.数据类型5.1 数据类型可以使变量知道如何分配内存空间。例如,char类型占用1个字符,int通常占用4个字节5.2 C 语言常用的数据类型有 int sort 浮点型 double float字符串 char指针&#x…

android webview控件的缩放问题 隐藏缩放控件

利用java的反射机制 public void setZoomControlGone(View view) { Class classType; Field field; try { classType WebView.class; field classType.getDeclaredField("mZoomButtonsController"); field.setAccessible(true); ZoomButtonsController mZoomButton…

分布式概念与协议

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 分布式协议 分布式理论概念 1. 分布式数据一致性 分布式数据一致性,指的是数据在多个副本中存储时&#xff…

C语言中的转义字符

在字符集中,有一类字符具有这样的特性:当从键盘上输入这个字符时,显示器上就可以显示这个字符,即输入什么就显示什么。这类字符称为可显示字符,如a、b、c、$、和空格符等都是可显示字符。 另一类字符却没有这种特性。它…

最常被程序员们谎称读过的计算机书籍

英文原文:Books Programmers Claim to Have Read 马克吐温曾经说过,所谓经典小说,就是指很多人希望读过,但很少人真正花时间去读的小说。这种说法同样适用于“经典”的计算机书籍。 在 Stack Overflow (以及其它很多软件论坛)上&…

java Web监听器导图详解

监听器是JAVA Web开发中很重要的内容,其中涉及到的知识,可以参考下面导图: Web监听器 1 什么是web监听器? web监听器是一种Servlet中的特殊的类,它们能帮助开发者监听web中的特定事件,比如ServletContext,H…

Linux C/C++ UDP Socket 网络通信

Python微信订餐小程序课程视频 https://edu.csdn.net/course/detail/36074 Python实战量化交易理财系统 https://edu.csdn.net/course/detail/35475 昨晚 Vv 让我给她讲讲网络编程,于是我就傻乎乎的带她入了门… 以下内容为讲课时制作的笔记~ 1. sock…

PCB布线规则

PCB布线有单面布线、双面布线及多层布线。布线的方式也有两种:自动布线及交互式布线,在自动布线之前,可以用交互式预先对要求比较严格的线进行布线,输入端与输出端的边线应避免相邻平行,以免产生反射干扰。必要时应加地…

strtok和strtok_r

strtok和strtok_r原型:char *strtok(char *s, char *delim); 功能:分解字符串为一组字符串。s为要分解的字符串,delim为分隔符字符串。 说明:首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。 …

ConTeXt 标题前后的空白

由于标题字一般都挺大,所以默认时标题之间的空白比较大,尤其是当多个标题在一起的时,空白就显得格外地大! 要去除空白可以这样做:\setuphead[chapter][before\nowhitespace,after\nowhitespace] 当然,我们也…

PHP 实现简单的 倒计时 时分秒

// 以 YII框架为例: C 层代码public function actionIndex(){//php的时间是以秒算。js的时间以毫秒算date_default_timezone_set("Asia/Hong_Kong");//地区//配置每天的活动时间段$starttimestr "18:53:00";//转换为时间戳$starttimestr …

芯片封装名称说明

1、BGA(ball grid array)   球形触点陈列,表面贴装型封装之一。在印刷基板的背面按陈列方式制作出球形凸点用以代替引脚,在印刷基板的正面装配LSI 芯片,然后用模压树脂或灌封方法进行密封。也称为凸点陈列载体(PAC)。引脚可超过200&#xf…