我知道这个问题有很多答案,但我总是在 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());
}
这是ch.h
int f(void);
我怎样才能让它工作?实际上,我在一个像这样建模的大程序中遇到了这个错误。我想这就是这样做的方法。 (是的,main 应该返回 0)。
最佳答案
您将会遇到问题,因为您定义了两个不同的 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
关于调用另一个文件中定义的 C 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28606202/