C -> Dynamische Allokierung schlägt fehl

Hallo an alle!

Ich habe folgendes Quellcode bisher:

#include 

typedef struct {
 char int[100];
 int id;
 struct s\_t \*next;
} s\_t;

void add(s\_t \*kopf, s\_t \*ptr) {
 ptr = kopf;
 kopf = (s\_t\*) malloc(sizeof(s\_t));
 kopf-\>next = ptr;
}

int main(int argc, char\* argv[]) {
 s\_t \*kopf=NULL, \*ptr;
 add(kopf, ptr);
 return 0;
}

-> In diesen beiden Zeilen:

 kopf = (s\_t\*) malloc(sizeof(s\_t));
 kopf-\>next = ptr;

erscheinen diese Warnings:

warning: incompatible implicit declaration of built-in function ‘malloc’
warning: assignment from incompatible pointer type

Aber warum? Was mache ich denn da falsch? Will eine linear verkettete Liste bauen… Jemand eine Idee?

Gruß PHANTOM

Vielleicht #include ?

Grüße,
Sebastian

Hallo,

Aber warum? Was mache ich denn da falsch?

Ich vermute, Du hast das #include vergessen.

Gruß

Fritze

Vielleicht #include ?

Grüße,
Sebastian

Sorry, da warst Du wohl schneller :smile:

Gruß

Fritze

Hallo!

Ich vermute, Du hast das #include vergessen.

Ja, stimmt!
Aber eine warning bleibt noch:
warning: assignment from incompatible pointer type
-> Diese erfolgt in der Zeile
kopf->next = ptr;

Gruß PHANTOM

Vielleicht #include ?

Ja, das fehlt, stimmt. Aber ich habe gerade auch im anderen Beitrag geschrieben, eine Warning bleibt immernoch bestehen:

warning: assignment from incompatible pointer type
-> Diese erfolgt in der Zeile
kopf->next = ptr;

Gruß PHANTOM

Hallo PHANTOM,

Aber eine warning bleibt noch:
warning: assignment from incompatible pointer type
-> Diese erfolgt in der Zeile
kopf->next = ptr;

Das Problem liegt hier:

typedef struct {
 char int[100];
 int id;
 struct s\_t \*next;
} s\_t;

in der Zeile
struct s_t *next;
kennt der Compiler den Typen s_t noch gar nicht.

typedef struct \_s\_t {
 char int[100];
 int id;
 struct \_s\_t \*next;
} s\_t;

MfG Peter(TOO)

Ah, okay, danke dir für deine Hilfe, so gehts…

Gruß PHANTOM

Hallo,

ich finde auch die Formulierung

char int[100];

nicht so glücklich. „int“ ist normalerweise ein Variablentyp und reserviert. Ich würde das nicht für einen Variablennamen nutzen und bin mir nichtmal sicher, ob das alle Compiler so schlucken.

Gruß

Fritze

char int[100];

nicht so glücklich. „int“ ist normalerweise ein Variablentyp
und reserviert. Ich würde das nicht für einen Variablennamen
nutzen und bin mir nichtmal sicher, ob das alle Compiler so
schlucken.

-> Stimmt, ich werde es korrigieren!

Gruß PHANTOM