如何在vscode中优雅的编写C语言
如何在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语言相关推荐
- 如何在MyBatis中优雅的使用枚举
From: https://segmentfault.com/a/1190000010755321 问题 在编码过程中,经常会遇到用某个数值来表示某种状态.类型或者阶段的情况,比如有这样一个枚举: p ...
- java如何给一个链表定义和传值_如何在CUDA中为Transformer编写一个PyTorch自定义层...
如今,深度学习模型处于持续的演进中,它们正变得庞大而复杂.研究者们通常通过组合现有的 TensorFlow 或 PyTorch 操作符来发现新的架构.然而,有时候,我们可能需要通过自定义的操作符来实现 ...
- 如何在vscode中使用GitLab
如何在vscode中使用GitLab 我同广大码友们一样,好不容易赶上了个节假日,回到家一顿安排,可屁股还没坐热就接到线上紧急BUG需要修复,木办法,拉项目导分支又是一顿排查,最后git stash, ...
- easyswoole数据库连接池_如何在 Swoole 中优雅的实现 MySQL 连接池
如何在 Swoole 中优雅的实现 MySQL 连接池 一.为什么需要连接池 ? 数据库连接池指的是程序和数据库之间保持一定数量的连接不断开, 并且各个请求的连接可以相互复用, 减少重复连接数据库带来 ...
- 如何在VSCode中添加Python解释器并安装Python库
如何在VSCode中添加Python解释器并安装Python库 作者介绍 一. 安装VScode编辑器 二. 安装Python解释器 三. 在VScode中添加Python解释器 四. 创建项目并在V ...
- 如何在Vscode中使用Grammarly
如何在Vscode中使用Grammarly Vscode Grammarly登录 https://zhuanlan.zhihu.com/p/455626295 1.F1 2.Log in 3.通过网站 ...
- 如何在Vscode中安装Python库
如何在vscode中安装python库 1.已经在vscode中装了python并配置好python运行环境. 检查是否正确配置好运行环境,按Windows+R组合键在运行窗口输入cmd,打开命令提示 ...
- lldb 调试php,linux系统下如何在vscode中调试C++代码
本篇博客以一个简单的hello world程序,介绍在vscode中调试C++代码的配置过程. 1. 安装编译器 vscode是一个轻量的代码编辑器,并不具备代码编译功能,代码编译需要交给编译器完成. ...
- 如何在 VSCODE 中高效使用 R 语言 (图文详解)
文章目录 一.功能特性展示 二.材料 三.安装 1.安装 vscode 2.安装 R 3.安装插件 R support for Visual Studio Code R LSP Client 4.Ra ...
最新文章
- 双宋喜结连理过程可以通过python爬虫Aispider 几行代码就能搞定!
- 关于android的外文论文,关于android的外文文献.doc
- 我的Thinkpad T410最近老是出Fan error
- 终于有人把项目搭建讲明白了!
- postgres 禁止远程登录_解决postgresql无法远程访问的情况
- 《Windows via C/C++》学习笔记 —— 用户模式的“线程同步”之“条件变量”
- wpf 开发 -TextBox背景自定义-Decorator
- Atitit mtp ptp rndis midi协议的不同区别
- qq互联php教程,thinkphp5怎么整合qq互联登录教程
- vscode插件开发流程
- Cornerstone 使用详解(版本2)
- html网页字体颜色代码大全
- 图片情感研究现状与思考
- WebGIS前端框架(openlayers,mapbox,leaflet)图形图像底层渲染原理分析
- 有可控冷热水隔板的储水式电热水器
- ubuntu 安装图片编辑工具pinta
- 简单理解云桌面的模板,桌面池和虚拟机的概念
- html中的input文本框禁止输入问题
- Nginx+Tomcat服务器负载均衡实践方案
- 自己做h5页面点击元素块的时候会出现黑色阴影