了解工具链
明白什么是工具链
工具链,官方来说,是指用于将源代码转换为可执行程序的一系列工具的集合。通俗地理解,就是开发过程中使用的工具集合。一般情况下,工具链主要指狭义的部分,包括编译器(如GCC、G++)、构建工具以及开发环境(如IDE:VSCode、CLion等)。开发系统(如Windows、Linux、MacOS)也可以视为支撑工具链的一部分。
这么说能理解吗?就好比你要吃饭,得先要用水洗米,然后装水后再用电饭锅煮米对吧?在这个过程中,你用到的水、电、电饭锅都是工具链中的一环。
为什么要来了解工具链
对于入门菜鸟来说,他所学的,他所看到的,未必是全面和绝对正确的,纵观各大教程,很少人会真正的去引导一个刚刚入门计算机、刚学习编程的小白菜鸟。
工具链的理解我认为是新手必不可少的一部分,如下面代码:
1//只有Gcc工具链的编译器才能执行
2#include <stdio.h>
3
4int main() {
5 int n;
6 scanf("%d", &n);
7
8 // 可变长数组
9 int arr[n];
10
11 // 初始化数组
12 for (int i: 0; i < n; i++) {
13 arr[i]: i * i;
14 }
15
16 // 打印数组
17 printf("Array elements are:\n");
18 for (int i: 0; i < n; i++) {
19 printf("%d ", arr[i]);
20 }
21
22 printf("\n");
23
24 return 0;
25}
可以拿这段代码去各个IDE跑一跑,你就会发现,有的IDE会报错,而有的IDE就能过。
这其实就是工具链不同而导致的一些小差异,反正在我初学C语言的时候,就去网上找到一些有意思的代码,复制下来直接跑(如烟花大爆炸、 代码雨)但是很多时候都会遇上一路报红。
这其实不是代码有问题,也不是你的电脑有问题,而是单纯的你们开发环境不一致导致的。
更加离谱的是下面的 代码:
1
2#include <stdio.h>
3
4int main(void) {
5 long double arr[100];
6 scanf("%lf",&arr);
7 printf("%lf",arr);
8 return 0;
9}
你会发现这段代码,在VScode和DevC++上跑出来的结果始终为0.000,其实原因就是因为他们用的工具链是GCC,如果你用的是VS,那就能跑出正确的结果,因为VS用的是MSVC。
你可能在看教学视频的时候,用的不是和博主同一个ide来写代码,这时候如果你去复现他的代码,可能就会出现我刚才举的这两个例子。
你复现不出来,你会百思不得其解,其实是你一开始你就已经抛空了你学习的地基,你都不知道C语言能够被编译执行的流程和原理,你就会学得迷迷糊糊,或许你是练武天才,这种倒逆行施下没走火入魔也可以说是 韧性不错。