我有一个头文件(.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