如何在vscode中优雅的编写C语言

各位好,我认为vscode编辑器在windows环境下除了Pycharm外是最方便的IDE了,但在初学C语言时很少有人的第一个C语言软件使用的是vscode来编译与运行,使用10年前的IDE,在学习的时候看上去就不那么优雅与美观,因此本文旨在手把手的描述如何在vscode中实现C语言的编译与运行。(其实也挺无聊的,无论什么软件,请重点在意代码本身的实现)

1. 写在开头

大概搜了下vscode运行C语言的文章,其实本文很多也是拷贝了他们的方法,并稍加改善,更贴合萌新入门,避免不必要的时间浪费。最最必要的前提条件是下载一个vscode的ide,注意这个ide的安装是不需要管理员权限的,对于大公司打工人(用户权限,不能随意安装软件)是一个福音。

1.1 下载vscode

1.2 安装GCC编译器

本文选用了MinGW,推荐使用离线安装包安装,其实就是解压到方便找到的目录,我选的是i686-posix-dwarf,据说它有着最佳的兼容性。版本都可以。

请注意并记录下解压的具体目录位置,后面更改.json文件时需要

1.3 安装vscode的两个插件

Code Runner

C/C++

1.4 环境变量设置

进入windows的环境变量界面,选择系统变量中的Path变量,将mingw64(或者mingw32)\bin的路径添加到Path中去。

设置完毕后可以在终端通过查看gcc版本进行验证是否成功:

2. 最终效果

为了明确这些操作之后需要实现的程度,这里直接对最终效果进行描述,首先需要新建一个文件夹,这个文件夹自己定义名称,我的叫 C TEST PROJECTS,在这个文件夹中新建如下几个文件,右击该文件夹选择用vscode打开后就是下图效果:

这里的C TEST PROJECTS就是接下来需要新建C文件的地方,可以将相关的例程放在这个文件路径中,当然如果需要新建其他的文件夹,只要保证整体的文件结构不变即可。
注意这里.vscode是一个C TEST PROJECTS下的子文件夹,2个.json文件属于改子文件夹内,测试用的hello.c文件不包含在.vscode文件夹内,但包含在C TEST PROJECTS文件夹内。

3. 配置文件内容变更

文件建立完毕后,就要在各个文件内挨个放内容了:
hello.c 这里的代码内容很随意,能编译运行就可以了。

#include <stdio.h>
int main(void)
{printf("Hello world\n");return 0;
}

c_cpp_properties.json 这里的代码内容如下,带Comments的需要改为自己的MinGW目录。

{"configurations": [{"name": "Win32","includePath": ["${workspaceRoot}","C:/Program Files/mingw32/include/**",       //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/include/c++",        //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/include/c++/i686-w64-mingw32",   //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/include/c++/backward",   //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/include",  //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/include-fixed",    //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/../../../../i686-w64-mingw32/include"  //改为自己的MinGW目录],"defines": ["_DEBUG","UNICODE","__GNUC__=6","__cdecl=__attribute__((__cdecl__))"],"intelliSenseMode": "msvc-x64","browse": {"limitSymbolsToIncludedHeaders": true,"databaseFilename": "","path": ["${workspaceRoot}","C:/Program Files/mingw32/include/**",   //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/include/c++",    //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/include/c++/i686-w64-mingw32",   //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/include/c++/backward",   //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/include",  //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/include-fixed",    //改为自己的MinGW目录"C:/Program Files/mingw32/lib/gcc/i686-w64-mingw32/6.4.0/../../../../i686-w64-mingw32/include"  //改为自己的MinGW目录]}}],"version": 4
}

launch.json 这里的代码内容如下,带Comments的需要改为自己的MinGW目录,仅一处。

{"version": "0.2.0","configurations": [{"name": "(gdb) Windows 上的 Bash 启动","type": "cppdbg","request": "launch","program": "输入程序名称,例如 ${workspaceFolder}/a.exe","args": [],"stopAtEntry": false,"cwd": "${fileDirname}","environment": [],"externalConsole": false,"pipeTransport": {"debuggerPath": "/usr/bin/gdb","pipeProgram": "${env:windir}\\system32\\bash.exe","pipeArgs": ["-c"],"pipeCwd": ""},"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": true},{"description":  "将反汇编风格设置为 Intel","text": "-gdb-set disassembly-flavor intel","ignoreFailures": true}]},{"name": "(Windows) Launch","type": "cppvsdbg","request": "launch","program": "cmd","preLaunchTask": "echo","args": ["/C","${fileDirname}\\${fileBasenameNoExtension}.exe","&","echo.","&","pause"],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole":true},{"name": "(gdb) Launch","type": "cppdbg","request": "launch","program": "${workspaceFolder}/${fileBasenameNoExtension}.exe","args": [],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"MIMode": "gdb","miDebuggerPath": "C:\\Program Files\\mingw32\\bin\\gdb.exe",// 改为自己的MinGW目录"preLaunchTask": "echo","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}]}]
}

tasks.json 这里的代码内容如下,直接复制,无需更改。

{"version": "2.0.0","tasks": [{"label": "echo","type": "shell","command": "gcc","args": ["-g", "${file}", "-o", "${fileBasenameNoExtension}.exe","-fexec-charset=GBK"]}],"presentation": {"echo": true,"reveal": "always","focus": false,"panel": "shared", "showReuseMessage": true,"clear": false}
}

全部修改完毕后记得保存。

4. 验证与总结

上述步骤看似很长,其实不是很麻烦,新建三个文件,修改一下路径就可以实现优雅的编程了,上文中提到的hello.c 就是我们的测试文件,运行方法有两种,参考Code runner,按下F1,然后输入Run Code后回车确认;

或者按下此时vscode界面左上角的运行Button,编译与运行后效果如下:

如何在vscode中优雅的编写C语言相关推荐

  1. 如何在MyBatis中优雅的使用枚举

    From: https://segmentfault.com/a/1190000010755321 问题 在编码过程中,经常会遇到用某个数值来表示某种状态.类型或者阶段的情况,比如有这样一个枚举: p ...

  2. java如何给一个链表定义和传值_如何在CUDA中为Transformer编写一个PyTorch自定义层...

    如今,深度学习模型处于持续的演进中,它们正变得庞大而复杂.研究者们通常通过组合现有的 TensorFlow 或 PyTorch 操作符来发现新的架构.然而,有时候,我们可能需要通过自定义的操作符来实现 ...

  3. 如何在vscode中使用GitLab

    如何在vscode中使用GitLab 我同广大码友们一样,好不容易赶上了个节假日,回到家一顿安排,可屁股还没坐热就接到线上紧急BUG需要修复,木办法,拉项目导分支又是一顿排查,最后git stash, ...

  4. easyswoole数据库连接池_如何在 Swoole 中优雅的实现 MySQL 连接池

    如何在 Swoole 中优雅的实现 MySQL 连接池 一.为什么需要连接池 ? 数据库连接池指的是程序和数据库之间保持一定数量的连接不断开, 并且各个请求的连接可以相互复用, 减少重复连接数据库带来 ...

  5. 如何在VSCode中添加Python解释器并安装Python库

    如何在VSCode中添加Python解释器并安装Python库 作者介绍 一. 安装VScode编辑器 二. 安装Python解释器 三. 在VScode中添加Python解释器 四. 创建项目并在V ...

  6. 如何在Vscode中使用Grammarly

    如何在Vscode中使用Grammarly Vscode Grammarly登录 https://zhuanlan.zhihu.com/p/455626295 1.F1 2.Log in 3.通过网站 ...

  7. 如何在Vscode中安装Python库

    如何在vscode中安装python库 1.已经在vscode中装了python并配置好python运行环境. 检查是否正确配置好运行环境,按Windows+R组合键在运行窗口输入cmd,打开命令提示 ...

  8. lldb 调试php,linux系统下如何在vscode中调试C++代码

    本篇博客以一个简单的hello world程序,介绍在vscode中调试C++代码的配置过程. 1. 安装编译器 vscode是一个轻量的代码编辑器,并不具备代码编译功能,代码编译需要交给编译器完成. ...

  9. 如何在 VSCODE 中高效使用 R 语言 (图文详解)

    文章目录 一.功能特性展示 二.材料 三.安装 1.安装 vscode 2.安装 R 3.安装插件 R support for Visual Studio Code R LSP Client 4.Ra ...

最新文章

  1. 双宋喜结连理过程可以通过python爬虫Aispider 几行代码就能搞定!
  2. 关于android的外文论文,关于android的外文文献.doc
  3. 我的Thinkpad T410最近老是出Fan error
  4. 终于有人把项目搭建讲明白了!
  5. postgres 禁止远程登录_解决postgresql无法远程访问的情况
  6. 《Windows via C/C++》学习笔记 —— 用户模式的“线程同步”之“条件变量”
  7. wpf 开发 -TextBox背景自定义-Decorator
  8. Atitit mtp ptp rndis midi协议的不同区别
  9. qq互联php教程,thinkphp5怎么整合qq互联登录教程
  10. vscode插件开发流程
  11. Cornerstone 使用详解(版本2)
  12. html网页字体颜色代码大全
  13. 图片情感研究现状与思考
  14. WebGIS前端框架(openlayers,mapbox,leaflet)图形图像底层渲染原理分析
  15. 有可控冷热水隔板的储水式电热水器
  16. ubuntu 安装图片编辑工具pinta
  17. 简单理解云桌面的模板,桌面池和虚拟机的概念
  18. html中的input文本框禁止输入问题
  19. Nginx+Tomcat服务器负载均衡实践方案
  20. 自己做h5页面点击元素块的时候会出现黑色阴影

热门文章

  1. [球体积交]Girlfriend 2021牛客多校第2场 F
  2. 邮箱发信量到达上限,发不出邮件,你知道该怎么办吗?
  3. js以excel为模板的打印
  4. python识别中文验证码_Python实现验证码识别
  5. Dynamics 365 新建组织时一直提示识别不到Reporting Extensions
  6. 阿里云云呼叫中心——软电话SDK前端接入
  7. v-show会预先渲染_预先进行Big Design的利弊-我该怎么做
  8. win10 租约到期不可连网
  9. linux 动态监控进程
  10. 文件 打包 及 生成Excel文件转PDF格式和Excsl文件格式一体数据