如何在.c文件之间共享用户定义的函数?

如何在.c文件之间共享用户定义的函数?,c,C,我正在学习在C编程的几个文件中共享“函数”。因此,为了共享/访问在一个文件(比如one.c)中创建的用户定义函数,从另一个文件two.c进入,我们需要创建一个单独的头文件,以文件one命名,即one.h,并且应该在one.h中声明指定的函数。完成。然后我通过include one.h将头文件one.h包含在文件one.c和文件two.c中。现在,当我调用文件one.c的函数时,它将从2.c中找到圆的面积。我得到一个编译错误,如下所示 C:\Users\Lenovo\AppData\Local\T

我正在学习在C编程的几个文件中共享“函数”。因此,为了共享/访问在一个文件(比如one.c)中创建的用户定义函数,从另一个文件two.c进入,我们需要创建一个单独的头文件,以文件one命名,即one.h,并且应该在one.h中声明指定的函数。完成。然后我通过include one.h将头文件one.h包含在文件one.c和文件two.c中。现在,当我调用文件one.c的函数时,它将从2.c中找到圆的面积。我得到一个编译错误,如下所示

C:\Users\Lenovo\AppData\Local\Temp\cceCxXJH.o:two.C:.text+0x36:对“area\u circle”的未定义引用

我的功能名称是area_circle。请帮助我在文件之间共享函数的方式是否正确

文件一.c:

文件2.c


我使用gcc two.c-o two&&two来编译和运行程序。请帮我解决这个问题。

该函数需要存在于最终可执行文件中,因此您应该同时编译这两个文件:

gcc one.c two.c -o two
    ~~~~~
gcc -c one.c -o one.o
gcc -c two.c -o two.o
gcc one.o two.o -o two
#rm one.o two.o
或者更明确地说,将它们链接在一起:

gcc one.c two.c -o two
    ~~~~~
gcc -c one.c -o one.o
gcc -c two.c -o two.o
gcc one.o two.o -o two
#rm one.o two.o

作为一个旁注,你应该在一个头文件中放变量声明,并将其定义放在一个.c文件中,以便它可以正确地链接。

尽管重复是C++而不是C,但是很多答案都适用于编译系统。具体来说,头中的函数声明告诉编译器,在某个地方,可以使用此名称的函数,这是它的签名。创建程序时的问题是,您需要将使用函数的代码与定义函数的代码链接起来——错误消息告诉您没有这样做。您需要在命令行中指定目标文件、库或源文件,以定义尝试链接程序的函数。
gcc -c one.c -o one.o
gcc -c two.c -o two.o
gcc one.o two.o -o two
#rm one.o two.o