Argument von inkompatibler Zeigertypwarnung übergeben
Ich habe heute die meiste Zeit versucht, Zeiger in C herauszufinden, fragte sogar aFrage früher, aber jetzt bin ich auf etwas anderes stecken. Ich habe folgenden Code:
typedef struct listnode *Node;
typedef struct listnode {
void *data;
Node next;
Node previous;
} Listnode;
typedef struct listhead *LIST;
typedef struct listhead {
int size;
Node first;
Node last;
Node current;
} Listhead;
#define MAXLISTS 50
static Listhead headpool[MAXLISTS];
static Listhead *headpoolp = headpool;
#define MAXNODES 1000
static Listnode nodepool[MAXNODES];
static Listnode *nodepoolp = nodepool;
LIST *ListCreate()
{
if(headpool + MAXLISTS - headpoolp >= 1)
{
headpoolp->size = 0;
headpoolp->first = NULL;
headpoolp->last = NULL;
headpoolp->current = NULL;
headpoolp++;
return &headpoolp-1; /* reference to old pointer */
}else
return NULL;
}
int ListCount(LIST list)
{
return list->size;
}
Jetzt habe ich in einer neuen Datei:
#include <stdio.h>
#include "the above file"
main()
{
/* Make a new LIST */
LIST *newlist;
newlist = ListCreate();
int i = ListCount(newlist);
printf("%d\n", i);
}
Beim Kompilieren erhalte ich die folgende Warnung (dieprintf
Anweisung gibt aus, was es soll):
file.c:9: warning: passing argument 1 of ‘ListCount’ from incompatible pointer type
Sollte ich mir wegen dieser Warnung Sorgen machen? Der Code scheint zu tun, was ich will, aber ich bin offensichtlich sehr verwirrt über Zeiger in C. Nach dem Durchsuchen der Fragen auf dieser Site stellte ich fest, dass, wenn ich das Argument zu ListCount mache(void *) newlist
Ich bekomme keine Warnung und verstehe weder warum noch was(void *)
tut wirklich ...
Jede Hilfe wäre dankbar, danke.