-2

真的不知道如何在标题中更好地解释这一点。基本上我正在学习如何在 C 中分离我的代码。我有一个 main,相当于 java 中的 ArrayList 类(但转换为 c 并且非常基本)和一个头文件,它声明了我的结构和所有正在使用的函数。我正在使用文本中的所有示例代码,并且我正在使用适用于 windows 8 的最新版本的 dev c++。

每次我尝试编译 main 时,我都会得到: In function main undefined reference to "newList" [Error] Id returned 1 exit status

这是我的代码:

main.c
#include <stdio.h>
#include "ArrayList.h"

int main(int numParms, char *parms[]){
     list myList;
     myList = newList(myList);

     printf("End");
     return 0;  
}

ArrayList.c
#include <stdio.h>
#include "ArrayList.h"

list newList(list myList){
 myList.size = 0;
 return myList;
}

list add(list myList, int value){
  myList.values[myList.size] = value;
  myList.size++;
  return myList;
  }

int get(list myList, int position){
  int entry;
  entry = myList.values[position];
  return entry;
}

int size(list myList){
 return myList.size;
}

list delete(list myList, int position){
     int count;
   for(count =0; count<(myList.size-1); count++){
        myList.values[count] = myList.values[count+1];
   }
   myList.size --;
   return myList;
}

void print(list myList){
int count;
printf("Current list contents:\n");
if (myList.size > 0){
    for (count=0; count<myList.size; count++){
        printf("Element %d is %d\n", count, get(myList, count));
        }
    printf("\n");
}
else{
    printf("The list is empty\n\n");
}
 }

ArrayList.h
#define MAX_SIZE 100
typedef struct{ 
int size;
int values[MAX_SIZE];       
 }list;

 list newList(list);
 list add(list, int);
 int get(list, int);
 int size(list);
 list delete(list, int);
 void print(list);
4

1 回答 1

0

这实际上是一个链接器问题。编译没问题,但是当链接器尝试组装这些片段时,它在任何地方都找不到 newList。我的猜测是您没有编译文件 ArrayList.c 并将结果链接到您的项目。

于 2013-05-19T06:05:54.890 回答