C 外部函数?
Sample1.cC 外部函数?,c,function,extern,C,Function,Extern,Sample1.c #include "stdio.h" int f1(int x, int y) { printf("%d %d", x, y); return x+y; } #include "stdio.h" extern int f1(int x,int y); int main(void) { printf(" %d\n", f1(5,6)); return 0; } Sample2.c #include "stdio.h" int f1(int x, int y)
#include "stdio.h"
int f1(int x, int y)
{
printf("%d %d", x, y);
return x+y;
}
#include "stdio.h"
extern int f1(int x,int y);
int main(void)
{
printf(" %d\n", f1(5,6));
return 0;
}
Sample2.c
#include "stdio.h"
int f1(int x, int y)
{
printf("%d %d", x, y);
return x+y;
}
#include "stdio.h"
extern int f1(int x,int y);
int main(void)
{
printf(" %d\n", f1(5,6));
return 0;
}
我试图编译Sample1.c
文件,然后在Turbo c/c++编译器(Windows XP)上编译Sample2.c
。它显示以下错误:
Compiling Sample2.c:
Linking Sample2.exe:
Linker Error : Undefined Symbol _f1 in module Sample2.c
在这方面有人能帮我吗?您是否将两个对象文件链接在一起?链接器的命令行是什么
您必须编译这两个并将它们链接到同一个程序中,这就是您所做的吗?turboc确实是一个非常古老的产品;您可能需要考虑升级。 在C世界中,您需要将单个C文件编译成对象文件,然后将对象文件链接在一起。我没有使用过TurboC,但我想有一些机制可以“将文件添加到项目”或类似的东西来关联多个文件
此外,虽然您拥有的是完全合法的,但对于任何真正的产品,我强烈建议您制作一个头文件,而不是使用
extern
。使用头文件,您可以声明相同的原型并将其包含在两个.c文件中,如果原型与函数声明不完全匹配,编译器将能够向您发出警告。正如您目前编写的那样,您可能不会发现函数参数中的错误,并且很难从中诊断行为。djgpp是tc的好替代品
它是运行dos的gcc这里不需要“外部程序”;见: