C中头文件的意义是什么?[副本]

niknxzdl  于 2023-06-21  发布在  其他
关注(0)|答案(4)|浏览(121)

此问题已在此处有答案

13年前就关门了

可能重复:

[C] Header per source file.
In C++ why have header files and cpp files?
C++ - What should go into an .h file?
是头文件存在于C中的唯一原因
因此开发人员可以快速查看可用的功能
以及他们可以采取什么样的论点?
还是和编译器有关?
为什么没有其他语言使用这种方法?
只有我这么觉得吗,还是有两组函数定义
只会导致更多的维护和更多的错误空间?
或者,了解头文件只是每个C开发人员必须知道的事情吗?

yruzcnhs

yruzcnhs1#

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

tyky79it

tyky79it2#

编译器需要头文件中的信息来了解哪些函数、结构等可用以及如何使用它们。
所有语言都需要这种信息,尽管它们以不同的方式检索信息。例如,Java编译器通过扫描类文件或Java源代码来检索信息。
Java方式的缺点是,编译器可能需要在其内存中保存更多的信息才能完成此操作。这在今天并不是什么大不了的事情,但是在七十年代,当C语言被创建时,在内存中保存那么多信息是根本不可能的。

643ylb08

643ylb083#

头文件存在的主要原因是在多个源文件之间共享声明。
假设您在文件a.c中定义了函数float *f(int a, int b),并在b.cd.c中重用。为了允许编译器正确地检查参数和返回值,您可以将函数原型放在头文件中并将其包含在.c源文件中,或者在每个源文件中重复原型。
typedef等也是如此。
虽然理论上您可以在每个源文件中重复相同的声明,但要正确管理它将成为一场真实的的噩梦。
有些语言使用相同的方法。我记得TurboPascal单位没有太大的不同。你可以把use ...放在开头,以表明你需要在其他地方定义的函数。我不记得这是否也被传递到 Delphi 。

pgvzfuti

pgvzfuti4#

1.知道图书馆里有什么可以供你使用。
1.将程序拆分成小块以供编译器使用。同时编译一兆字节的C文件将占用比大多数现代硬件所能提供的更多的资源。
1.减少编译器负载。为什么要在屏幕显示程序中了解深度数据库引擎呢?让它只学习它现在需要的功能。
1.分离私有和公共数据。这种用法并不常见,但你可以在C中实现C++使用私有字段的功能:每个.c文件包括两个.h文件,一个具有私有内容的声明,另一个具有其他文件可能需要的任何内容。命名空间冲突的可能性更小,由于封闭化而更安全。
1.备用配置。Makefile决定使用哪个头文件,并且给定两个不同的头文件,相同的代码可以服务于两个不同的平台。
可能更多

相关问题