我有一個頭文件(.h)與下面的聲明。在主程序中使用自定義LinkedList庫;存儲大小是未知的
typedef struct LinkedList LinkedList;
後記我LinkedList.c文件我有以下
#include "LinkedList.h"
typedef struct Node {...} Node;
struct LinkedList {
Node *head;
int size;
} LinkedList;
此設置類似於一個,我發現了here與不同之處在於我沒有定義的數據成員我的.h文件中LinkedList的結構(因爲我想保持節點的東西是私有的)。頭文件的我的understanding是任何私有結構都是在實現中定義的(即在.c文件中)。這是做這件事的正確方法嗎?我在LinkedList.c文件中有一個initializeList函數,其中我將initalize size設置爲0並且指向NULL。
我然後編譯成使用
gcc -o LinkedList -c LinkedList.c
在here方向以下一個庫文件這一點。
然後我有一個main.c文件,在那裏我有以下
#include <stdio.h>
#include <stdlib.h>
#include "LinkedList.h"
int main()
{
LinkedList list1;
initializeList(list1);
for(int index = 1; index <= 5; index++)
{
int input;
printf("Enter num: ");
scanf("%d", input);
insertNthPosition(list1, input, index);
}
for(int index = 1; index <= 5; index++)
{
printf("\n%d\n", getNthValue(list1, index));
}
return 1;
}
當我使用 gcc -o main main.c
我收到以下錯誤
的「列表1」存儲大小是不知道
編輯OP澄清,我使用#include語句在我LinkedList.c文件中做了這樣的事 – user278039
時,通常預期的'LinkedList'是一個不透明的類型'main.c'。變量不能被聲明爲不透明類型,只能作爲指向不透明類型的*指針。 – kaylum
這是否意味着我將不得不東西'鏈表*列表1 =的malloc(的sizeof(結構鏈表));' – user278039