可能重复:
[C] Header per source file.
In C++ why have header files and cpp files?
C++ - What should go into an .h file?
C中存在头文件的唯一原因是开发人员可以快速查看可用的函数,以及它们可以采用哪些参数?或者它与编译器有关?
为什么没有其他语言使用此方法?它只是我,还是看起来有两套功能定义只会导致更多的维护和更多的错误空间?或者只知道每个C开发人员必须知道的头文件?
答案 0 :(得分:23)
声明可用的函数和变量需要头文件。您可能无法访问所有的定义(= .c文件); C支持库中的二进制代码分发。
答案 1 :(得分:11)
编译器需要头文件中的信息才能知道哪些函数,结构等可用以及如何使用它们。
所有语言都需要这种信息,尽管它们以不同的方式检索信息。例如,Java编译器通过扫描类文件或java源代码来检索信息。
Java方式的缺点是编译器可能需要在其内存中保存更多信息才能执行此操作。今天这没什么大不了的,但是在七十年代,当C语言被创建时,根本不可能在内存中保留那么多信息。
答案 2 :(得分:8)
标题存在的主要原因是在多个源文件之间共享声明。
假设您在文件float *f(int a, int b)
中定义了a.c
函数,并在b.c
和d.c
中重复使用。要允许编译器正确检查参数并返回值,您可以将函数原型放在头文件中,并将其包含在.c
源文件中,或者在每个源文件中重复原型。
同样适用于typedef
等。
虽然理论上可以在每个源文件中重复相同的声明,但正确管理它会成为一个真正的噩梦。
某些语言使用相同的方法。我记得TurboPascal单位并没有太大的不同。您可以将use ...
放在开头,表示您将需要在其他位置定义的函数。我不记得是否也将它传递给Delphi。
答案 3 :(得分:2)
可能更多。