前言

在大型项目开发面前,有clion,visual studio 20xx系列的产品存在,但是相对于基础学习,这些大型开发环境的占用和安装流程可能会稍微麻烦点。

在大学常规学习C语言时,我们常用的软件有:

  1. dev c++

  2. visual c++ 6.0

  3. code:blocks

  4. c-free

等常规软件,他们界面相对简单体积小,能满足基本学习要求。故相对而言,这些软件大部分都没什么更新了所以更固定。

如果对对其他不做要求且需要高版本的gcc,那么你可以下载更高版本,去修改编译器使用的gcc即可。

但是如果你和作者一样也喜欢折腾,也对编辑器的外观有一定的追求,那么本文或许能够帮到你。

注意!配置可能稍显麻烦,不喜欢折腾的千万别勉强


正文

正文须知:很多软件的发布都是基于海外服务器,国内或有转载的,但是本文基于官网操作。懂科学之力的自然会得心应手。

0.本文所使用的环境

  1. windows 11
  2. vscode 1.65.2
  3. gcc 9.2

1.vsocde

首先我们需要进入官网下载一个vsocode,戳此处,这里稍微注意下微软在国内的下载速度有点慢,有能力的朋友可以使用科学之力。

下载完之后打开vscode,默认是英文环境,按图操作:

点击安装,完成后右下角会提示重启软件以应用设置。

2.mingw

2.1 gcc安装

然后我们需要下载gcc,因为code本身只作为一个编辑器,编译以及debug的功能还是需要依赖gcc。戳此处跳转mingw,还是老话这玩意下的比较慢。

下载完成后打开.exe程序

点击install,会进入到

在此处你可以修改下载的路径,全部下载大概需要五百多兆的内存,老电脑如果c盘不够大建议放置其他盘,新电脑则问题不大,看到后等待下载完点击continue

,然后轮到我们选择需要安装的组件了:,之前百度的其实也不明不白的,所以直接快刀斩乱麻,全都下载,每行右击选择mark for installation之后点击左上角

静候安装,完成后找到你所安装的文件夹目录,进入bin目录,往下滑能看到gcc、g++、gdb则表示基本无误

2.2 添加到path

右击此电脑->属性->高级系统设置->环境变量

然后找到系统变量里的path打开

点击新建,将你mingw安装目录copy进来,记住要带上bin,如图所示

完成后我们打开cmd或powershell进行验证

1
2
gcc -v
g++ -v

得到如图提示即可

可以的话先重启下电脑,以免vsocde抽风没识别到gcc已经添加到系统环境变量中了。

当然尝鲜的话你可以使用dev c++的gcc使用,只存在版本的差异而已。路径应该是你所安装的盘符/dev c++/bin目录下。但同时也要注意是否添加入变量环境中!

2.3 hello world

同样的我们在拓展商店中先下载一个基础从c/c++拓展

建议先创建一个文件夹用来专门存放.c文件

我们新建一个hello.c文件

编写第一个程序:

1
2
3
4
5
6
#include<stdio.h>

int main(){
printf("hello world!\n");
return 0;
}

f5或者点击运行->启动调试会弹出一个选择配置

这里我们直接选择第一个gdb即可,以前用过第二个,但是配置不够完整…..导致程序只能编译运行不能debug,所以也很苦恼,最后将两者结合了一下就差不多行了。

我们选择gcc.exe之后,我们会发现文件夹下多了一个.vscode,里面有两个文件分别是launch.json和tasks.json。并且都是存在内容的,但是你会发现程序并没有运行,所以直接套用我这里的模板。

需要注意几点就是我的mingw路径是在d盘的,我会在launch.json和tasks.json中指出,希望你能仔细阅读

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
{
//launch.json
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc.exe - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "C:\\Windows\\system32\\cmd.exe",
"args": ["/C","${fileDirname}\\${fileBasenameNoExtension}.exe","&","pause"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "D:\\MinGW\\bin\\gdb.exe",//这里需要修改
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe 生成活动文件"
},

{
"name": "debug",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "D:\\MinGW\\bin\\gdb.exe", //这里需要修改
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
],
"preLaunchTask": "C/C++: gcc.exe 生成活动文件"
}
]
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
//tasks.json
"tasks": [
{
"type": "cppbuild",
"label": "C/C++: gcc.exe 生成活动文件",
"command": "D:\\MinGW\\bin\\gcc.exe", //这里需要修改
"args": [
"-fdiagnostics-color=always",
"-g",
"${file}",
"-o",
"${fileDirname}\\${fileBasenameNoExtension}.exe"
],
"options": {
"cwd": "D:\\MinGW\\bin" //这里需要修改
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
},
"detail": "调试器生成的任务。"
}
],
"version": "2.0.0"
}

如果是c++的配置,记得将tasks.json的command程序改成g++.exe,至于label和prelaunchtask这两个要是愿意也可以把gcc.exe 改成g++.exe

使用模板之后,我们发现程序成功在cmd跑起来了

因为win11特性,cmd和powershell打开都是通过windows terminal打开的,这样我感觉挺好的

然后我们只需要注意launch配置中多了一块,那个就是我们需要用到的debug部分。如何使用如下:
首先创建一个断点,
就是鼠标放在语句前面出现红点,鼠标单击即可。

将任务调至debug

然后f5启动调试,我们会看到
程序停在了print函数中,右边可以看到变量i现在的值为0,cmd也没有输出,我们点击上面也就是单步调试,进行下一步操作的意思,我们会看到箭头跑到了for循环上,cmd也打印了一个0。

在下一步可以看到i的变量变成了1

至此,基本的程序运行和debug就解决了
要说vscode的缺点肯定是有的,有些很刁钻奇怪的问题他不一定会提示错误,但是就是无法运行,这点在vs 20xx系列上面就能对比出来,不过基本够用了。


结语

当然vscode还有一点不好,其实也是归根在微软身上,windows操作系统有个很不好的点就是系统的编码是根据地区设置来的。

那么是什么意思呢,就是简单来说,cmd的字符编码是gb2312还是啥来着,也就是在cmd中输入chcp,系统回执是936,而真正的项目开发一般都采用utf-8环境,也就是所说的65001。

所以你会发现中文,通常在cmd中都会乱码,可能网上有方法是教你文件改成ansi啊,或者gb2312的,但是这些都是治标不治本的,微软还在地区选项中有一个beta模式,可以强制系统编码为65001,但是下场很凄凉,到了别人936的环境中,你的文件所包含的中文全部是乱码的。

目前看来是没有什么办法能够根治的,因为即便你能永久修改了powershell或者cmd的字符集,但是老的windows软件可能用的还是那套字符,多少会存在差异,这也是为什么有些项目都会放在linux上开发。