C中的头文件有什么意义?

可能重复:
[C]每个源文件的标头。
在C ++中为什么有头文件和cpp文件?
C ++ – 什么应该进入.h文件?

C中存在头文件的唯一原因是开发人员可以快速查看哪些函数可用,以及它们可以采用哪些参数? 或者它与编译器有关?

为什么没有其他语言使用此方法? 它只是我,还是看起来有两套function定义只会导致更多的维护和更多的错误空间? 或者知道头文件只是每个C开发人员必须知道的东西?

需要头文件来声明可用的函数和变量。 您可能根本无法访问定义(= .c文件); C支持库中的二进制代码分发。

编译器需要头文件中的信息才能知道哪些函数,结构等可用以及如何使用它们。

所有语言都需要这种信息,尽管它们以不同的方式检索信息。 例如,Java编译器通过扫描类文件或java源代码来检索信息。

Java方式的缺点是编译器可能需要在其内存中保存更多信息才能够执行此操作。 今天这没什么大不了的,但在七十年代,当C语言被创建时,根本不可能在内存中保留那么多信息。

标头存在的主要原因是在多个源文件之间共享声明。

假设您具有在文件ac定义的函数float *f(int a, int b) ,并在bcdc重用。 要允许编译器正确检查参数并返回值,您可以将函数原型放在头文件中,并将其包含在.c源文件中,或者在每个源文件中重复原型。

同样适用于typedef等。

理论上,你可以在每个源文件中重复相同的声明,但正确管理它将成为一个真正的噩梦。

某些语言使用相同的方法。 我记得TurboPascal单位并没有太大的不同。 您可以在开头use ...表示您将需要在其他位置定义的函数。 我不记得那是否也被传递到Delphi。

  1. 了解库中的内容。
  2. 将程序拆分为编译器的一口大小的块。 同时编译一兆字节的C文件将比大多数现代硬件提供的资源更多。
  3. 减少编译器负载。 为什么它应该在屏幕显示程序中知道深度数据库引擎? 让它只学习它现在需要的function。
  4. 单独的私人和公共数据。 这种用法并不常见,但您可以在C中实现C ++使用私有字段:每个.c文件包含两个.h文件,一个包含私有内容的声明,另一个包含其他可能需要的文件。 命名空间冲突的可能性更小,由于密化而更安全。
  5. 替代配置。 Makefile决定使用哪个头,并且相同的代码可以在给定两个不同头文件的情况下为两个不同的平台提供服务。

可能更多。