不确定如何在标题中更好地解释这一点。基本上我正在学习如何在C中分离我的代码。我有一个main,相当于java中的ArrayList类(但转换为c并且非常基本)和一个头文件,它声明了我的struct和所有正在使用的函数。我正在使用文本中的所有示例代码,我正在使用最新版本的dev c ++ for Windows 8.
每当我尝试编译main时,我得到: 在函数主要未定义的引用“newList” [错误] Id返回1退出状态
这是我的代码:
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);
答案 0 :(得分:0)
这实际上是一个链接器问题。编译没问题,但是当链接器尝试组装片段时,它无法在任何地方找到newList。我的猜测是你没有编译文件ArrayList.c并将结果链接到你的项目。