需要头文件来声明可用的函数和变量.您可能没有访问定义(=的.c文件)在所有 ; C支持库中的二进制代码分发.
需要头文件来声明可用的函数和变量.您可能没有访问定义(=的.c文件)在所有 ; C支持库中的二进制代码分发.
编译器需要头文件中的信息才能知道哪些函数,结构等可用以及如何使用它们.
所有语言都需要这种信息,尽管它们以不同的方式检索信息.例如,Java编译器通过扫描类文件或java源代码来检索信息.
Java方式的缺点是编译器可能需要在其内存中保存更多信息才能执行此操作.今天这没什么大不了的,但在七十年代,当C语言被创建时,根本不可能在内存中保留那么多信息.
标头存在的主要原因是在多个源文件之间共享声明.
假设你已经float *f(int a, int b)
在文件中定义了函数a.c
并在b.c
和中重用了d.c
.要允许编译器正确检查参数并返回值,您可以将函数原型放在头文件中并将其包含在.c
源文件中,或者在每个源文件中重复原型.
同样适用于typedef
等
理论上,你可以在每个源文件中重复相同的声明,但正确管理它将成为一个真正的噩梦.
某些语言使用相同的方法.我记得TurboPascal单位并没有太大的不同.您可以use ...
在开始时表示您将要求在其他地方定义的功能.我不记得是否也将其传递给Delphi.