错误:函数调用的未定义引用

时间:2015-02-13 19:14:42

标签: c

#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

1 个答案:

答案 0 :(得分:2)

首先,只包含包含声明的头文件(.h),不包括带定义的.c文件。

那就是说,它失败的原因是你在CreateList.c文件中输入了一个拼写错误。 testCreatetList应为testCreateList(注意盈余t)。

您可以考虑在标头中声明void testCreateList(struct ListNode *ListHead,int length)并将其包括在内而不是.c文件中。

代码可能还有其他问题 - 我真的看起来并不长。