2个文件,一个寄放main()函数,一个存放自定义函数,哪个阶段合并

2个文件,一个存放main()函数,一个存放自定义函数,哪个阶段合并
我用keil编写c语言程序,
该程序由2个文件组成,一个文件存放main()函数,一个文件存放自定义函数func(),其中main()函数中要使用到自定义函数func(),
那么该程序需要经过 预编译--编译--汇编--链接 这4个步骤。
我想问的是:在哪个阶段,2个文件合并成一个文件啊?
是在编译之前,将2个文件合并成一个文件,然后进行编译?
还是编译的时候每个文件单独编译,在链接阶段合并成一个程序文件?

------解决方案--------------------
预编译--编译--链接
编译的时候每个文件单独编译,在链接阶段合并成一个程序文件
------解决方案--------------------
以gcc为例(微软的cl没用过):
gcc -c -o main.o main.c
gcc -c -o my_lib.o my_lib.c
gcc -o app main.o my_lib.o
------解决方案--------------------
比如文件是 main.c和func.c,那么编译后生成main.o和func.o,两个文件还是独立的,链接后,才成了一个文件。
------解决方案--------------------
如果一个文件#include另一个文件, 在预编译的时候合并
如果两个独立的.c文件, 在链接的时候合并
------解决方案--------------------
在链接的时候会进行合并。

引用:
我用keil编写c语言程序,
该程序由2个文件组成,一个文件存放main()函数,一个文件存放自定义函数func(),其中main()函数中要使用到自定义函数func(),
那么该程序需要经过 预编译--编译--汇编--链接 这4个步骤。
我想问的是:在哪个阶段,2个文件合并成一个文件啊?
是在编译之前,将2个文件合并成一个文件,然后进行编译?
还是编译的时候每个文件单独编译,在链接阶段合并成一个程序文件?


引用:
我用keil编写c语言程序,
该程序由2个文件组成,一个文件存放main()函数,一个文件存放自定义函数func(),其中main()函数中要使用到自定义函数func(),
那么该程序需要经过 预编译--编译--汇编--链接 这4个步骤。
我想问的是:在哪个阶段,2个文件合并成一个文件啊?
是在编译之前,将2个文件合并成一个文件,然后进行编译?
还是编译的时候每个文件单独编译,在链接阶段合并成一个程序文件?