0

私のソースファイルは次で始まります:

#include "foo.h"

ヘッダーファイルから、すべてのグローバル変数、型、および構造体を使用できます。私のヘッダーファイルでは、いくつかのインクルードから始めました。

#include<file.h>

次に、グローバル変数に移動します。

#define GLOBAL

次に、構造体:

#typedef struct boo;

次にタイプします。次に、関数宣言に進みます。IE:

size_t foo(int*r, size_t nitems);

リンカエラーが発生するのは何が間違っているのですか>

4

3 に答える 3

1

問題はおそらくあなたがどのようにリンクしているかにあります。

于 2011-07-15T15:25:17.517 に答える
1

ヘッダーファイルは、ソースコードに関数宣言を提供します。あなたが見つけたように、それはあなたのコードをコンパイルさせるのに十分ですが、それをリンクさせるのには十分ではありません。

リンクするには、実際にコンパイルされた関数を含むファイルをリンカに提供する必要があります。関数宣言は、事実上、これを実行することをコンパイラに約束します。

正確にどのように行うかは、使用しているツールとコンパイルされた関数の形式によって異なります。

于 2011-07-15T15:56:15.250 に答える
0

#define単純な置換識別子の場合、コピー/貼り付けとまったく同じように機能します。

あなたがした後

#define GLOBAL 5

次のコード

int GLOBAL;
GLOBAL = 13;
putchar(GLOBAL);

に変換されます

int 5;
5 = 13;
putchar(5);

明らかにコンパイルされません。

于 2011-07-15T16:02:36.027 に答える