有人问:C语言为什么只需要include<stdio.h>就能使用里面声明的函数?这是一个看起来非常简单的问题,但是很多初学者,甚至学了很久的人都可能没有搞明白。
为什么包含即可用?
要明白包含即可用的原因,就必须讲到C语言代码是如何变成可执行文件的了,这里可以参考《hello程序是如何变成可执行文件的》。这里使用#include指令,在预编译之后,相当于把文件里面的内容都放到.c中了。
//hello.c
#include<stdio.h>
int main(void)
{
printf("hello,编程珠玑\n");
return 0;
}
这一点也很容易验证:
$ gcc -E -o hello.i hello.c
执行完成之后,就可以看到hello.i里面涵盖了stdio.h中所有的内容。所以实际上,你只是在你的.c中声明了这些函数,既然声明了,那么你就可以使用。但是你要想真正用到它,还需要找到它的定义。这是在链接阶段做的事情。
链接的时候&#x