调用另一个文件中定义的C函数

时间:2015-02-19 12:17:52

标签: c file function

我知道这个问题有很多答案,但我总是在gcc c1.c上收到错误

c1.c:(.text+0x5): undefined reference to `f'
collect2: error: ld returned 1 exit status

无论我尝试什么。

这是c1.c

#include <stdio.h>

#include "c.h"

int main()
{
    printf("F %d\n",f());
}

这是c2.c

#include <stdio.h>

int f(void) {return 7;}

int main()
{
    printf("S %d\n",f());
}

这是c.h

int f(void);

我怎么能让它工作?实际上,我在一个像这样建模的大程序中得到了这个错误。我想这是做到这一点的方法。 (是的,主要应该返回0)。

1 个答案:

答案 0 :(得分:1)

您将遇到问题,因为您定义了两个不同的main函数,但执行此操作的一般方法是链接时问题:

gcc -c c1.c
gcc -c c2.c
gcc c1.o c2.o

您需要做的就是找出您想要的主要部分,并删除不需要的部分。

您可以执行以下操作:

gcc -Dmain=blah -c c1.c
gcc -c c2.c
gcc c1.o c2.o