今年准备考研,所以最近在稍微复习数据结构,所以又要开始写C啦
在被JetBrains的IDE惯坏了之后,除了Clion外别的IDE的UI都难以接受。Clion适合写项目,而我需要很多写简单的C代码,这个时候用起来Clion就感觉不是那么友好了。在一番折腾后,我选择用VS Code编写C语言代码。
使用VS Code的优点有如下几条:
- 单个C代码不需要建项目便可以运行。
- 调试极为方便,变量信息一览无余,即便是单个C文件也是可以调试的。
- 有代码高亮、补全功能
- 这个很重要,界面很好看。
- 安装包只有60M不到,体积小
以上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我们可以添加构造函数和解析函数,通过这些工具,就可以解决问题了。
- 在".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");
}
- 修改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的不少知识,是不是觉得很舒服呢?