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 *) newlistIch bekomme keine Warnung und verstehe weder warum noch was(void *) tut wirklich ...

Jede Hilfe wäre dankbar, danke.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage