-2

タイトルでこれをこれ以上うまく説明する方法が本当にわかりませんでした。基本的に、私は C でコードを分離する方法を学んでいます。java の ArrayList クラスに相当するメイン (ただし、c に変換され、非常に基本的です) と、構造体と使用中のすべての関数を宣言するヘッダー ファイルがあります。テキストからすべてのサンプル コードを使用しており、Windows 8 用の最新バージョンの dev c++ を使用しています。

メインをコンパイルしようとするたびに、次のようになります: 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 に答える