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

问题描述 投票:0回答:1

我正在学习在C编程中分享几个文件中的“函数”。因此,为了共享/访问在一个文件(例如one.c)中创建的用户定义函数,从另一个文件(two.c)进入,我们需要创建一个以文件One命名的单独头文件,如one.h并且应该声明one.h中的指定函数。完成。然后我在one.h的文件one.ctwo.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编译并运行程序。请帮助我。

c
1个回答
1
投票

该函数需要存在于最终的可执行文件中,因此您应该将两个文件一起编译:

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文件中,以便可以正确链接。

© www.soinside.com 2019 - 2024. All rights reserved.