相信很多同学在学习C/C++后都有这样的疑问,#include这句话到底是怎么意思?这句话的背后隐含了什么?我们常用的stdio.h存放在了哪里?
这篇文章就来解答这个问题。
谁来处理头文件
有上述疑问的同学很可能是因为不熟悉一个叫预编译器(preprocessor)的东西。
让我们简单的了解一下可执行程序的生成过程。
程序员写的大家都可读的代码是不能被CPU直接执行的,CPU可以执行的代码是二进制机器指令,因此一定有某个过程将程序员写的程序转换为了机器指令,这就是编译器。
以上大部分同学应该都知道,但是你知道编译器在将代码翻译成机器指令前其实还有一个步骤吗?这个步骤就是预编译。
那么预编译都用来做什么呢?请注意,接下来是重点:
预编译的工作非常简单,预编译器找到源文件中#include指定的文件,然后copy这些文件的内容并粘贴到#include这一行所在的位置。
假设在源文件a.c的第一行有一句#include ,那么预编译器怎么处理?
预编译找到stdio.h,把stdio.h的内容