Fehler bei Funktonsübergabe
-
Hiho, bin auf dieses Forum gestoßen und würde hilfe brauchen und zwar:
hab ich eine funktion, die Ratten hinzufuegt:
void addRat(struct RatCollection *Sammlung){ int nr; char nam[MAX]; printf("Nummer? "); scanf("%d", &nr); fflush(stdin); printf("Name? "); fflush(stdin); fgets(nam,MAX,stdin); anhaengen(Sammlung, nam, nr); }
und die soll dann mittels dynamische datenstrukturen, die daten mittels anhaengen(...) anhängen.
[cpp]
void anhaengen(struct RatCollection *Sammlung, char *n, int number) {struct RatCollection *zeiger;
if(Sammlung->anfang == NULL) {
/*if(Sammlung->anfang = (struct RatCollectionmalloc (sizeof(struct RatCollection))) == NULL) {
printf("Kein Speicherplatz zur verfuegung!!\n\n");
exit(EXIT_FAILURE);
}*/if(Sammlung->anfang = NULL){
Sammlung->anfang->nummer = number;
strcpy(Sammlung->anfang->name,n);
Sammlung->anfang->next=NULL;
}else {
zeiger=Sammlung->anfang;
while(zeiger->anfang->next != NULL) {
zeiger->anfang->next;
*if((zeiger->anfang->next = (struct RatCollection ) malloc (sizeof(struct Ratcollection))) == NULL) {
printf("Kein Speicherplatz zur verfuegung!!\n\n");
exit(EXIT_FAILURE);
}zeiger->anfang->nummer = number;
strcpy(zeiger->anfang->name,n);zeiger->anfang->next = NULL;
}
}
}
}[/cpp]
Nun habe ich 2 Fehler die mir der Kompiler sagt:
Fehler 1 error C2371: 'anhaengen': Neudefinition; unterschiedliche Basistypen
und
Fehler 2 error C2027: Verwendung des undefinierten Typs "Ratcollection"
habe sie mit FETT makiert wo sie auftreten..
hier noch die strukturen:struct Rat{ struct Rat *next; int nummer; char name[256]; }; struct RatCollection{ int Anz; struct Rat *anfang; struct Rat *ende; }Sammlung;
Lg aus Dresden
-
hm warum geht des net gscheit formatian
-
Zu Fehler 2:
C ist case-sensitive, Du hast einmal RatCollection und einmal Ratcollection.
-
mh danke und zu fehler 1? hat da jemand was zu sagen?
-
Offenbar taucht der Bezeichner vorher schonmal auf.
-
MFK schrieb:
Offenbar taucht der Bezeichner vorher schonmal auf.
wie meinst du das? das kann schon sein.. da ich von der switch anweisung raus übergebe mit:
case ..: addRat(Sammlung);
und dann springt er eben in die addRat .. die geht er durch und sollte zu anhaengen reinspringen wo eben besagter fehler kommt:
Fehler 1 error C2371: 'anhaengen': Neudefinition; unterschiedliche Basistypen
meinst du das? kannst du mir einen verbesserungsvorschlag geben bzw was ist falsch?
-
Raga-Fan schrieb:
Fehler 1 error C2371: 'anhaengen': Neudefinition; unterschiedliche Basistypen
Das heißt, du hast anhaengen schon einmal definiert, aber anders. In der nächsten Zeile des Fehlerlogs sollte stehen, wo die erste Definition ist.
-
MFK schrieb:
Raga-Fan schrieb:
Fehler 1 error C2371: 'anhaengen': Neudefinition; unterschiedliche Basistypen
Das heißt, du hast anhaengen schon einmal definiert, aber anders. In der nächsten Zeile des Fehlerlogs sollte stehen, wo die erste Definition ist.
ja hab ich eben oben mit
anhaengen(Sammlung, nam, nr);
wobei Sammlung eben ein struct ist, nam ein char und nr int..
also müsste das doch alles passen? mit "basistypen ist das doch gemeint oder?
-->
void anhaengen(struct RatCollection *Sammlung, char *n, int number)
-
Bekommst du an der Stelle eine Warnung C4013? Dann fehlt ein Prototyp für die Funktion, sonst geht dein Compiler davon aus, dass die Funktion int zurückgibt, und stört sich später am void-Rückgabetyp.