使用VS Code搭建C开发环境

今年准备考研,所以最近在稍微复习数据结构,所以又要开始写C啦

在被JetBrains的IDE惯坏了之后,除了Clion外别的IDE的UI都难以接受。Clion适合写项目,而我需要很多写简单的C代码,这个时候用起来Clion就感觉不是那么友好了。在一番折腾后,我选择用VS Code编写C语言代码。

使用VS Code的优点有如下几条:

  1. 单个C代码不需要建项目便可以运行。
  2. 调试极为方便,变量信息一览无余,即便是单个C文件也是可以调试的。
  3. 有代码高亮、补全功能
  4. 这个很重要,界面很好看
  5. 安装包只有60M不到,体积小
vs1.PNG

以上1~3条,对于初学C的程序员来说简直是福音,因为DEV、CB等等,谁用谁知道(逃

环境搭建

(一)基本运行环境搭建

由于VS Code本身只是编译器,所以搭建开发环境前,需要VS Code需要安装C的插件C/C++ for Visual Studio Code(在VSCode中按Ctrl + Shift + X,搜索安装一下即可),并且下载好MinGW。MinGW我是放在C盘根目录下的 C:\MinGW,配置launch.json时注意与本机MinGw的路径对应

首先需要在VS Code中打开一个文件夹作为C的运行文件夹,编写好C程序好,按F5,提示选择环境选C++gdb会生成".vscode"的文件夹,并弹出launch.json的文件,用以下内容代替。

{
   "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch", 
            "type": "cppdbg", 
            "request": "launch",
            "targetArchitecture": "x86",
            "program": "${file}.exe", 
            "miDebuggerPath": "c:\\MinGW\\bin\\gdb.exe", // 注意这里要与本机MinGw的路径对应
            "args": [], 
            "stopAtEntry": false, 
            "cwd": "${workspaceRoot}",
            "externalConsole": true, 
            "preLaunchTask": "g++"
        }
    ]
}

然后,在C程序界面按F5,报错提示,选择配置任务运行程序会在".vscode"文件夹自动生成tasks.json文件,并用以下内容代替代替原有内容。

{
    "version": "0.1.0",
    "command": "g++",
    "isShellCommand": true,
    "showOutput": "always",
    "args": ["-g","${file}","-o","${file}.exe"],
    "problemMatcher": {
        "owner": "cpp",
        "fileLocation": ["relative", "${workspaceRoot}"],
        "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        }
    }
}

接下来再按F5,便可以运行啦,是不是很舒服~

(二)显示控制台内容&&中文乱码

通过上面简单的步骤便可以搭建C的运行环境了,美中不足的是每次都需要自己来手动IO操作 || 来暂停控制台查看程序运行结果,另外中文还是乱码。

这里吐槽一下M$的CMD真的丑啊,用的还不是UTF-8编码。

解决的思路就是在程序运行前将控制台切换到UTF-8编码,程序运行后暂停控制台。

这里简单带过一下C的一些知识。一般程序从main()函数开始执行到main()结束。需要注意的是,在main()函数结束return 0之前,还是可以执行一些操作的。另外通过GCC我们可以添加构造函数和解析函数,通过这些工具,就可以解决问题了。

  1. 在".vscode"文件夹下新建head.h头文件,并填下以下代码。
#include <stdlib.h>
static void before(void) __attribute__((constructor));
static void after(void) __attribute__((destructor));
static void middle(void);
static void before()
{
    system("chcp 65001"); //切换字符集
    system("cls");
}
static void after()
{
    system("echo.");
    system("pause");
}
  1. 修改tasks.json,用以下内容替换。
{
    "version": "0.1.0",
    "command": "g++",
    "isShellCommand": true,
    "showOutput": "always",
    "args": ["-g","${file}","-include","${workspaceRoot}\\.vscode\\head.h","-o","${file}.exe"], //修改的是这一行,添加了-include命令,预编译头文件
    "problemMatcher": {
        "owner": "cpp",
        "fileLocation": ["relative", "${workspaceRoot}"],
        "pattern": {
            "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
            "file": 1,
            "line": 2,
            "column": 3,
            "severity": 4,
            "message": 5
        }
    }
}

通过上面的简单步骤,很快就可以搭建起C的开发环境了,还能学到C的不少知识,是不是觉得很舒服呢?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容