C 外部函数?

C 外部函数?,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)

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)
{
  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

在这方面有人能帮我吗?

您是否将两个对象文件链接在一起?链接器的命令行是什么

  • 不要使用Turbo C编译器。。。它死了
  • 您需要将两个编译器对象链接到一个可执行文件

  • 您必须编译这两个并将它们链接到同一个程序中,这就是您所做的吗?

    turboc确实是一个非常古老的产品;您可能需要考虑升级。

    在C世界中,您需要将单个C文件编译成对象文件,然后将对象文件链接在一起。我没有使用过TurboC,但我想有一些机制可以“将文件添加到项目”或类似的东西来关联多个文件


    此外,虽然您拥有的是完全合法的,但对于任何真正的产品,我强烈建议您制作一个头文件,而不是使用
    extern
    。使用头文件,您可以声明相同的原型并将其包含在两个.c文件中,如果原型与函数声明不完全匹配,编译器将能够向您发出警告。正如您目前编写的那样,您可能不会发现函数参数中的错误,并且很难从中诊断行为。

    djgpp是tc的好替代品

    它是运行dos的gcc

    这里不需要“外部程序”;见: