gpt4 book ai didi

c - C 中的多个源文件- makefile 究竟如何工作?

转载 作者:太空狗 更新时间:2023-10-29 16:24:03 25 4
gpt4 key购买 nike

我是 C 语言的初学者,我需要了解 makefile 的工作原理,而且我对 C 文件的组合工作原理有些困惑。假设我们有一个 main.c、一个 foo.c 和一个 bar.c。应该如何编写代码才能使 main.c 识别其他文件中的函数?此外,在 foo.c 和 bar.c 中,是所有在 main 函数中编写的代码都在那里,还是我们需要为我们需要它们做的事情编写其他函数?我已经阅读了有关如何编写 makefile 的教程,它在很大程度上是有道理的,但我对它的基本逻辑仍然有点困惑。

最佳答案

通常情况下,您将在头文件中为其他文件定义函数,然后将其包含在 main.c 中。例如,考虑这些片段:

主.c:

#include "foo.h"

int main(int argc, char *argv[]) {
do_foo();
return 0;
}

foo.h:

void do_foo();

foo.c:

#include <stdio.h>
#include "foo.h"

void do_foo() {
printf("foo was done\n");
}

会发生的事情是,main.c 将变成一个目标文件(main.o),而 foo.c 将变成一个目标文件(foo.o)。然后链接器会将这两个文件链接在一起,这就是 main.c 中的 do_foo() 函数与 foo.o 中的函数“关联”的地方。

示例 GCC 命令:gcc -o myprogram main.c foo.c

示例生成文件

myprogam: main.o foo.o
gcc -o myprogram main.o foo.o

main.o: main.c foo.h
gcc -c main.c

foo.o: foo.c foo.h
gcc -c foo.c

关于c - C 中的多个源文件- makefile 究竟如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4349553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com