1

私が取り組んでいるネットワーク プロジェクトのリンク リストの実装を書いています。これは、llist.h と llist.c の 2 つのファイルに分割されています。いくつかのプロジェクト ファイルに llist.h を含め、コンパイル時に、llist.c を含むコンパイルしたライブラリにリンクします。残念ながら、llist.h のすべてのメソッド ヘッダーで「複数の定義」エラーが発生します。すなわち:

../util//libdutil.a(llist.o): In function `LListContains':
llist.c:(.text+0x0): multiple definition of `LListContains'
../util//libdutil.a(llist.o):llist.c:(.text+0x0): first defined here

なぜこのエラーが発生するのかよくわかりません。以前は問題ありませんでしたが、メソッドをもう 1 つ追加してから、この問題が発生し始めました。h ファイル全体は次のとおりです。

#ifndef _LLIST_H_
#define _LLIST_H_

typedef struct _LinkedList
{
    int length;
    void* data;
    struct _LinkedList* head;
    struct _LinkedList* tail;
}* LinkedList;

LinkedList LListContains(LinkedList list, void* data, int (*cmp)(const void *, const void *));

void* getDataLList(LinkedList list);

LinkedList createLList(void* data);

void* getFromHeadLList(LinkedList list, int pos);

void* popHeadLList(LinkedList list);

void* popTailLList(LinkedList list);

LinkedList getNextLList(LinkedList current);

LinkedList getPrevLList(LinkedList current);

void addHeadLList(LinkedList list, void* data);

void addTailLList(LinkedList list, void* data);

void FreeLList(LinkedList list);

#endif

ありがとう!

更新:問題は、プロジェクト ファイルの 1 つにある次のコード スニペットにあるようです。

OPP_DIRECTION(getDirToXYPOS((XYPOS*)getFromHeadLList(memories[avID], 0), &curPos)))

getFromHeadLList は、llist.h に追加し、llist.c で定義したメソッドです。その部分をコメントアウトして、ダミーパラメータを追加するだけです。

OPP_DIRECTION(getDirToXYPOS(&curPos, &curPos)))

それはうまくコンパイルされます。

4

1 に答える 1

1

ほとんどの場合llist.c、プロジェクトと静的ライブラリにコンパイルしました。

于 2013-05-26T20:42:39.203 に答える