C object 文件必须与相应的 header 文件同名吗?

Do C object files have to have to the same name as the corresponding header file?

如标题所问,object 文件是否必须与 header 文件同名才能正确 linked?

即。我可以有一个 header 文件 'foo.h' 并将其命名为 'bar.o' 并且仍然正确 link 吗?

在源代码中,我仍然需要写 include "foo.h" 所以我推测 linker 会拒绝这个,因为两者不是同一个名字。

没有任何内容表明特定的头文件与特定的目标文件相关联。

头文件通常只包含声明。它不会 说明任何有关关联定义所在位置的信息。您可以有两个源文件,例如 main.c 和 foo.c,并且都使用名为 common.h 的头文件。编译时,您可以将 main.o 和 foo.o 以及 link 它们一起创建到“myprogram”中。