在多个文件程序中,函数定义如何包含在主程序中?

时间:2018-08-05 20:44:17

标签: c include modular-design function-definition

如果我有一个头文件List.h,其中包含与列表相关的功能的原型,则功能的定义在源文件(c文件)List.c中。 List.c文件和main.c文件(或代表主程序的任何源文件)都包含List.h文件。现在,主程序具有列表函数的原型,但是在没有将List.c文件包含到main.c文件中的同时,如何将函数的定义包含在主程序中呢?并非List.hList.c文件具有相同的名称。

我正在使用 Windows 并使用 MS Visual Studio

2 个答案:

答案 0 :(得分:2)

对于您的情况,您将List.c编译为List.o(如果使用Windows,则可能编译为List.obj,然后将main.c编译为{{1} }。然后,再次运行编译器,以将两个目标文件以及任何其他必要的库链接在一起。

如果您使用GCC(GNU编译器集合中的GNU C编译器),则可以使用:

main.o

如果需要指定库,可以将它们添加到目标文件之后。

您可能也可以使用gcc -Wall -Werror -std=c11 -c List.c gcc -Wall -Werror -std=c11 -c main.c gcc -Wall -Werror -std=c11 -o program main.o list.o 使所有这些操作自动化。

答案 1 :(得分:1)

它们是单独编译的。编译后,大多数编译器会生成包含可执行代码,重定位,符号,调试和其他信息的目标文件。链接程序接下来将这些目标文件“合并”在一起,该链接程序使用目标文件中的信息来创建正确的可执行文件。

这当然是一个非常简单的描述,如果您想了解更多,应该在互联网上阅读更多有关它的信息。