在Mac上使用vs-code快速上手c语言学习(入门文,老鸟退散)

天下事,合久必分、分久必合,你肯定想不到当你逃离到Mac平台这么多年之后,有一天你会再用微软的产品来写代码 :) 其实微软的产品虽然用户体验总是做不到最好,但整体上的确拉低了行业的进入门槛,对于编程也是这样的。 Seven的c语言课程,老师选择的是vc6,但总不能为了使用vc6,又回到那个我们曾经无爱的世界。

其实Xcode已经足够好了,足以支撑从入门到专家各个阶段的需求。不过对于入门者来说,还是比较重。好在现在各类代码编辑器非常发达,从Java程序员最爱的intellij idea,到底层程序员喜欢的UltraEdit,还有老牌的Mac代码编辑器TextMate。配合适当的脚本,这些产品都能很好的支持类似集成环境的开发工作。

在这些产品中,微软团队中年轻的Code还是很亮眼的,下面就来说说如何用vs-code来做c语言的入门开发。

  1. 安装 到Visual Studio Code主页上,最大的那个按钮就是下载。下载后是一个zip包,解压缩之后得到名为"Visual Studio Code.app"的可执行程序,使用鼠标拖动到/Applications文件夹,安装就算完成了。
  2. 配置c语言插件 启动vs-code之后,默认是一个黑色的窗口,其中左侧窄边上,从上到下有5个快捷图标,最下面的一个就是扩展插件“Extensions”管理。点击这个图标。 在出现的列表框最上面是一个搜索框,在其中输入c++,会看到很多c/c++的插件,通常第一个出现的就是有"Microsoft"字样的c/c++插件,选择最后的Install。视网速的不同,通常几分钟就能安装完成,“Install”按钮会变成"reload",点击一下,vs-code会快速的重启,从而激活c/c++插件。 这个插件的功能主要是提供了c/c++语言的语法高亮编辑器、编译、运行、调试的支持。 同样的方式,还可以安装一个Code Runner插件,可以为简单的程序提供自动编译、运行的功能,后面会说到使用的方法。
  3. 选择工作目录

不同于我们平常在命令行的编辑、编译、执行。通常说这种集成环境,都需要为每个项目,指定一个工作目录。不管你的项目是只有一行代码的实验小程序,还是包含上千个文件的大工程。 vs-code重启之后,选择左侧快捷栏最上面的图标,这就回到了最早vs-code一开始的样子,这个图标是文件视窗。 因为还没有打开任何文件,右侧的主画面,应当仍然在"welcome"欢迎页面。 在欢迎页面的左上部分,“Start”一节通常是第三行,有"Add workplace folder..."菜单,点击一下,可以在弹出的目录浏览器中选择自己工作的目录,如果还没有来得及准备目录,在窗口的右下角有新建文件夹按钮,最终选定目录之后,选择窗口右下角“Add”按钮可以确定选定的目录为工作目录。选定之后,你会发现左侧的文件列表框已经切换到了对应的目录,只是目录上层的工作区仍然是"UNTITLED",意思是“未命名”,因为实际上这个工程我们还没有命名。可以不管它,也可以在File菜单选择“Save Workplace As...”将工作区保存为一个文件,然后对文件取一个名字。 通常习惯上,一个工作区就是一组相关的项目,每个项目单独占用一个目录。

  1. 开始第一个c程序

左侧窗口选择刚才你新加入Workplace的目录,在右侧的欢迎页面选择“New File”,上面的File菜单中也有“New File”选项。可以建立一个新文件,右侧窗口完全空白,就是这个文件当前的内容。随后我们输入简短的几行代码来演示: #include<stdio.h> int main(int argc,char **argv){ printf("hello vs-code!\n"); return 0; } 代码输入完之后,File菜单有保存,快捷键COMMAND+S也可以。这时候会询问你文件名,比如我们保存为“test.c”。这时候你会发现,屏幕上的代码都有了色彩,这就是语法高亮编辑器的作用。 想运行这个代码,在编辑窗口右上角有3个图标,其中第一个就是代表执行的三角符号(这个就是我们前面安装的Code Runner插件),点一下,vs-code会自动编译、执行,并且在屏幕的右下角窗口返回执行的结果,当然如果程序有错误,这里也会返回编译的错误信息,帮助你修改程序。 通常到这里,对于刚学习编程的新手就算够用了。

  1. 配置编译脚本

如果是比较大的工程,就需要自己维护编译过程了,随后通过配置build编译任务,跟vs-code连接在一起。 在屏幕最上面Tasks菜单中,有Run Build Task选项,第一次运行,就会提示你需要建立任务设置配置文件,并自动打开一个新窗口,给你一个基本的文件模板。这个配置文件名字是tasks.json,对于新手,你可以先不了解过多,在下面这个模板上简单改改就好了(系统自动给出的模板有点偏简单,需要你修改的地方比较多): { "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "gcc", "args": [ "-o","test","test.c" ], "group": { "kind": "build", "isDefault": true } } ] } 通常只有中部的command及args两个选项需要你改,你能看出来当前实际上是调用gcc命令来编译test.c文件,你可以根据你的工程修改成其它的方式。修改完成存盘后,下次再从菜单选择Run Build Task就可以直接执行脚本,把你的代码编译完成了。

  1. 调试配置 在Mac,调试通常就是指使用gdb或者lldb进行程序调试。不过一直做服务器端的程序,这个功能我也用的很少。 配置方法是这样,在Debug菜单选择Add Configurations,同样会新打开一个窗口,并给你一个基本的模板,这个模板基本算可以直接用了。只要在program一节后面修改成"${workspaceFolder}/你编译后的可执行文件名"这种形式存盘就可以使用了。下面是我用的一个模板: { // 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": "(lldb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/test", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "launchCompleteCommand": "exec-run", "MIMode": "lldb" } ] } 以后想调试程序,只要菜单选择Start Debug,或者F5快捷键,都可以开始调试。 vs-code的c/c++插件的调试有一个坑需要注意,就是你使用的默认shell环境必须是bash,因为这个插件依赖了大量的直接脚本来调用系统调试程序及返回运行结果。如果是使用了跟bash兼容性不佳的其它环境,比如fish,则调试程序即便设置正确也无法启动。 以上...祝用起来开心。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端开发

超详细动手搭建一个Vuepress站点及开启PWA与自动部署

类似hexo一个极简的静态网站生成器,用来写技术文档不能在爽。当然搭建成博客也不成问题。

5436
来自专栏Hadoop实操

如何在DELL R730服务器上使用U盘安装linux操作系统

2533
来自专栏ionic3+

【技巧】ionic3优雅解决启动前、后黑白屏问题

启动前黑白屏问题,仅存在于android,是android应用的通病,ionic表示这锅它不背。 具体操作时,当我们点击桌面图标启动APP时,有时会闪一下黑色...

1166
来自专栏IMWeb前端团队

拥抱Node.js 8.0,N-API入门极简例子

N-API简介 Node.js 8.0 在2017年6月份发布,升级的特性中,包含了N-API。编写过或者使用过 node扩展的同学,不少都遇到过升级node版...

2167
来自专栏互联网杂技

Docker在PHP项目开发环境中的应用

环境部署是所有团队都必须面对的问题,随着系统越来越大,依赖的服务也越来越多,比如我们目前的一个项目就会用到: - Web服务器:Nginx - Web程序:P...

33810
来自专栏cloudskyme

maven 学习总结

1、关于Maven 最近学了一些maven方面的知识,感觉这个工具挺好用,为防遗忘现总结一下。Maven是一个项目管理工具,它可以通过一段描述信息来管理项目的构...

3015
来自专栏黑白安全

蚁逅v1.0_你从所未见的XSS平台

 集在线WEBTOOLS、BLOG以及一款基于socket.io开发的全新XSS平台

1796
来自专栏散尽浮华

[原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接

近年来,由于开源项目、社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发、敏捷开发、迭代开发、持续集成和单元测试这些拉风的...

7369
来自专栏linux运维学习

linux学习第六十一篇:主动模式和被动模式,添加监控主机,添加自定义模板,处理图形中的乱码,自动发现

主动模式和被动模式 主动或者被动是相对客户端来讲的 被动模式,服务端会主动连接客户端获取监控项目数据,客户端被动地接受连接,并把监控信息传递给服务端 主动模式,...

2875
来自专栏Python、Flask、Django

TP踩过的坑!(自动验证一直不验证的问题!)

752

扫码关注云+社区