Warum bekomme ich initialization from incompatible pointer type Warnung?

So, ich bin mit gcc auf Linux und haben die beiden folgenden code-snippets in separaten Dateien (nur relaveant code-Abschnitte im Lieferumfang enthalten):

int main()
{
    /* Code removed */
    int_pair_list *decomp = prime_decomp(N);
    if (decomp)
        while(decomp->next)
            decomp = decomp->next;
    printf("%d\n" decomp->value_0);
}
int_pair_list *prime_decomp(unsigned int n)
{
    int_pair_list *head = malloc(sizeof(*head));
    int_pair_list *current;
    /* method body removed, current and head remain as int_pair_list pointers */
    return current ? head : NULL;
}

Das Programm kompiliert und läuft einwandfrei, aber beim compilieren bekomme ich die Warnung:

problem_003.c: In function main’:
problem_003.c:7:26: warning: initialization from incompatible pointer type [enabled by default]
  int_pair_list *decomp = prime_decomp(N);
                      ^

Ich bin neu in C und ich kann einfach nicht herausfinden, warum ich immer diese Warnung.

Ist die Funktion deklariert, bevor main?
int_pair_list *head = malloc(sizeof(*head)) ? oder int_pair_list *head = malloc(sizeof(head)) ?
Sehen Zeilennummer, ich glaube nicht, dass dieser Prototyp deklariert ist.
Dann ist es, denke ich...
nopes, sizeof(*head) korrekt ist.

InformationsquelleAutor user163911 | 2015-08-11

Schreibe einen Kommentar