1

2 つの C ファイルがあります (最初のファイルには別のファイルが必要です)。

を使用する必要があります#include "XXX.C"が、.obj ファイルを個別に作成してから接続するにはどうすればよいですか (Borland のプロジェクトのようなもの)。コマンドについて何か読んだことlink a, bがありますが、機能せず、リファレンスが見つかりません。

ありがとうございました!

4

3 に答える 3

4

#include "XXX.C" は使用しないでください。個別にコンパイルする場合。呼び出したいすべての関数を含む「XXX.h」を作成する必要があります。

その後、ファイルを個別にコンパイルできます。

gcc -c YYY.c -o yyy.o
gcc -c XXX.c -o xxx.o

1 回のパスでコンパイルおよびリンクする場合:

gcc xxx.c yyy.c -o xxx

または、xxx.c をコンパイルして、以前に生成したオブジェクト ファイルを使用する場合:

gcc xxc.c yyy.o -o xxx

あるいは:

gcc xxx.o yyy.o -o xxx

最後の例では、コンパイルするソース コードがないため、gcc がリンカーを呼び出します。

しかし、2 つまたは 3 つ以上のファイルがある場合、次に確認することは Makefile の使用方法です。

例:

xxx.c:

#include "yyy.h"

int x(int a)
{
   return a + 1;
}

int main(int argc, char **argv)
{
   x(1);
   y(2);
   return 0;
}

yyy.c:

int y(int b)
{ 
   return b + 2;
}

yyy.h:

#pragma once
int y(int b);

個別にコンパイルできます:

gcc -c yyy.c -o yyy.o
gcc xxx.c yyy.o -o xxx

この例では、xxx.c は yyy.c で定義された関数を呼び出します。

于 2012-09-27T14:56:17.313 に答える
1

いいえ、使用しないでください#include "XXX.c"。ヘッダーのみを含める必要があります。コード ファイルは、互いに別々にコンパイルする必要があります。

どのくらい正確に実行されるかはコンパイラによって異なりますが、通常は次のように、ファイルを 1 つずつコンパイラにリストするだけです。

gcc main.c helpers.c functions.c
于 2012-09-27T14:49:58.097 に答える
1

必要なオブジェクト ファイルごとに、.h (ヘッダー、宣言付き) および (少なくとも 1 つの) .c (実装付き) ファイルが必要です。

ヘッダー ファイルの詳細については、こちらを参照してください。

次に、次のことを行う必要があります。

#include "XXX.h"

.c ファイルではなく、ヘッダー ファイルをインクルードしてください。

于 2012-09-27T14:52:49.373 に答える