外部功能?

时间:2009-07-22 10:48:38

标签: c function extern

Sample1.c

#include "stdio.h"
int f1(int x, int y)
{
  printf("%d %d", x, y);
  return x+y;
}

Sample2.c

#include "stdio.h"
extern int f1(int x,int y);
int main(void)
{
  printf(" %d\n", f1(5,6));
  return 0;
}

我试图在Turbo C / C ++编译器(Windows XP)上编译Sample1.c文件然后编译Sample2.c。它显示以下错误:

Compiling Sample2.c:
Linking Sample2.exe:
Linker Error : Undefined Symbol _f1 in module Sample2.c

有人可以帮我这方面吗?

5 个答案:

答案 0 :(得分:5)

  1. 不要使用Turbo C编译器......它已经死了。
  2. 您需要将两个编译器对象链接到单个可执行文件。

答案 1 :(得分:3)

Turbo C真的是一个很老的产品;你可能想考虑升级。

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

djgpp是tc

的良好替代品

是gcc运行dos