3

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++ Compiler (Windows XP)でSample1.cファイルをコンパイルしようとしました。Sample2.c次のエラーが表示されます。

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

誰でもこの点で私を助けることができますか?

4

5 に答える 5

3

Turbo C はかなり古い製品です。アップグレードを検討することをお勧めします。

C の世界では、個々の C ファイルをオブジェクト ファイルにコンパイルし、オブジェクト ファイルをリンクする必要があります。私は Turbo C を使用したことはありませんが、「プロジェクトにファイルを追加」するメカニズムや、複数のファイルを関連付けるメカニズムがあると思います。

また、あなたが持っているものは完全に合法ですが、実際の製品では、使用する代わりにヘッダー ファイルを作成することを強くお勧めしますextern。ヘッダー ファイルを使用すると、同じプロトタイプを宣言して両方の .c ファイルに含めることができます。プロトタイプが関数宣言と正確に一致しない場合、コンパイラは警告を表示できます。現在書いているように、関数の引数の間違いを見つけられない可能性があり、そこから診断が難しい動作が得られます。

于 2009-07-22T12:56:54.350 に答える
0

djgpp は tc の良い代替品です

dosを実行しているgccです

于 2009-10-26T13:58:26.400 に答える