#include"mylist.h"
#include<stdio.h>
#include<stdlib.h>
int main(int argc , char **argv)
{
struct ListNode *ListHead=NULL;
FILE *fp;
fp = fopen("input","r");
int nChunks,i,length,elements,values,t;
/*insert*/
if(fscanf(fp,"%d",&nChunks)!=EOF)
{
for(i=0;i<nChunks;i++)
{
fscanf(fp,"%d",&length);
testCreateList(ListHead,length);
}
}
while(fscanf(fp,"%d",&elements)!=EOF)
{
fprintf(stdout,"%d",elements);
}
return 0;
}
这是我的主要档案。我无法找出错误的位置。加上我想创建ListHead和“i”一样多。现在能够考虑如何维护多个ListHead。
这是mylist.h
#ifndef __MYLIST__H__
#define __MYLIST__H__
#include<stddef.h>
typedef struct
{
struct MyNode *left,*right;
int chunk;
}MyNode;
struct ListNode
{
struct ListNode *ListHead;
int nLength;
};
void testCreateList(struct ListNode *ListHead,int length);
#endif
现在是我的CreateList.c文件
#include"mylist.h"
#include<stdio.h>
#include<stdlib.h>
void testCreatetList(struct ListNode *ListHead,int length)
{
struct ListNode *node ,*temp;
node = (struct ListNode *)malloc(sizeof(struct ListNode));
node->nLength = length;
ListHead = node;
}
错误:
gcc testList.c
/tmp/cchD3tuF.o: In function `main':
testList.c:(.text+0x80): undefined reference to `testCreateList'
collect2: error: ld returned 1 exit status
答案 0 :(得分:2)
首先,只包含包含声明的头文件(.h),不包括带定义的.c文件。
那就是说,它失败的原因是你在CreateList.c
文件中输入了一个拼写错误。 testCreatetList
应为testCreateList
(注意盈余t
)。
您可以考虑在标头中声明void testCreateList(struct ListNode *ListHead,int length)
并将其包括在内而不是.c文件中。
代码可能还有其他问题 - 我真的看起来并不长。