这个问题在这里已有答案:
我正在学习在C编程中分享几个文件中的“函数”。因此,为了共享/访问在一个文件(例如one.c
)中创建的用户定义函数,从另一个文件(two.c
)进入,我们需要创建一个以文件One命名的单独头文件,如one.h
并且应该声明one.h
中的指定函数。完成。然后我在one.h
的文件one.c
和two.c
中包含了头文件(#include "one.h"
)。现在,当我调用函数(文件one.c
)时,将从two.c
找到圆的区域。我收到编译错误
C:\ Users \ Lenovo \ AppData \ Local \ Temp \ cceCxXJH.o:two.c :(。text + 0x36):未定义引用`area_circle'
我的功能名称是area_circle
。请帮助我,我的方式是否正确分享文件之间的功能。
文件one.c
:
#include<stdio.h>
#include "One.h"
float pi = 3.14;
float radius;
void main()
{
printf("Enter the radius: ");
scanf("%f", &radius);
float c_area = area_circle(radius);
float c_circum = circum_circle(radius);
}
float area_circle(float r)
{
float area = pi * r * r;
printf("Area of the circle: %.2f", area);
return area;
}
float circum_circle(float rad)
{
float circum = 2 * pi * rad;
printf("\nCircumference of the circle: %.2f", circum);
return circum;
}
档案one.h
float area_circle(float r);
float circum_circle(float rad);
float pi;
档案two.c
#include <stdio.h>
#include "one.h" //Included the header file in which the functions are declared.
void main()
{
extern float pi; //Global variable in One.c
float rds;
printf("Enter the radius: ");
scanf("%f", &rds);
float are = area_circle(rds); //Function built in One.c; Declared in One.h
float cir = circum_circle(rds); //Function built in One.c; Declared in One.h
}
我用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
作为旁注,您应该将变量声明放在头文件中,并将其定义放在一个.c
文件中,以便可以正确链接。