私が調べたところ、私を助けることができる資料が見つからなかったので、尋ねなければなりませんでした. これはコードです:
list.h:
typedef struct List_t *List;
list.c:
#include "list.h"
#include <stdlib.h>
#include <stdio.h>
typedef struct Item_t
{
struct Item_t* next;
ListElement data;
}*Item;
typedef struct List_t
{
Item head;
Item iterator;
CopyListElement copyFunc;
FreeListElement freeFunc;
};
list_example_test.c:
#include "list.h"
#include <stdlib.h>
#include <stdio.h>
ListElement copyA(ListElement a)
{
return a;
}
void destroyA(ListElement a)
{
}
bool testListCreate();
bool testListCopy()
{
List list1=listCreate(copyA,destroyA);
listInsertFirst(list1,(void*)6);
listInsertFirst(list1,(void*)2);
listInsertFirst(list1,(void*)1);
List list2=listCopy(list1);
listClear(list1);
if(list2->head==NULL) //here is the error!!
{
return false;
}
return true;
}
コードの最後の部分は、listCopy() 関数が機能するかどうかをチェックすることになっています。コンパイラは List という名前を認識し、「list2->」と入力すると、List のフィールドをオートコンプリートするように提案されます (この例では、「list2->head」を選択しました。問題の原因とその修正方法を教えてください。ありがとう!