1.在vs2019、2022下安装开发环境,实际上是在安装编译器软件,安装要开发的语言配套的库和头文件。大家在最早安装vs的时候会有一个选择环境的应用场景,你是要用这个环境写c++还是c++游戏开发亦或是python,当你们点击之后,好像发现vs又在自动下载了,他在下库。
2.我们在使用编译器都会有语法的自动提醒功能,如果今天不包含头文件,他就没有语法自动提醒功能,你写printf还没写完,他怎么知道你要写printf,实际上在你输入时,有语法提醒本质是编译器或编辑器,他会自动的将用户输入的内容不断地在被包含的头文件中进行搜索,所以自动提醒功能是依赖头文件来的。
3.我们在写代码的时候,我们的环境怎么知道我的代码中哪些地方有语法报错?哪些地方定义变量有问题?比如把指针赋给了一个整型。你不要小看编译器,比如vs2019是集成开发环境,大家平时写代码其实用的是编辑功能,实际上它里面内置的编译器,好比我们用vim写代码,gcc、g++就是编译器,他的工作模式有命令行模式,还有其他自动化的模式帮我们不断再进行语法检查。比如当我们在vim上写代码时,vim会自动调用gcc或g++,在后台不断地做gcc、g++,只不过他不做链接,只做预处理、编译这样的行为,一旦编译,有语法报错就显示出来了。再好比到我们再用一些编辑器写代码时,编辑器后端可能创建了一个多线程之类的,不断地去调他的编译器,把你的代码喂给这个编译器,编译器自动的会把你语法当中的问题,在哪一行全部给你暴露出来,哪一行有问题再由前端界面给你显示出来一个波浪号,就是告诉你有问题了。
所以为什么我们写代码时,我们还没有编译这个代码,但是它好像立马能够知道我的代码哪里有问题,这个能力是编译器给我们的,在我们写代码时,vs2019、vim等,他会不断地使用编译器的语法检查功能,相当于它既然能把代码翻译成二进制,就是要做语法检查做编译,它不断去用这个功能,此时就可以尽快查出来用户代码当中的一些语法问题。所以你们会发现一个现象,你把代码写完了,过了零点几秒,波浪号才弹出来,因为后端在计算。
总结,库和头文件早就已经安装到我们的系统当中了,现在有一个问题我们还没说,头文件和库都是被安装到了某些系统的路径下,我们平时写代码时就是#include<iostream>这样用的,我们可没有带这些路径,其实我们在任何地方写代码的时候,只包含头文件名就行了,根本原因是编译器默认会在标准系统路径下自动查找。