
folgendes Problem hätte ich gerade:
Wir müssen für die Hochschule ein Projekt in ANSI C (C99) programmieren (Kompiler soll gcc sein).
Dazu habe ich verschiedene Listen die aus verschiedenen structs bestehen.
Mein Problem ist, ich hätte gerne meine Funktionen zum manipulieren der Listen nicht für jede einzeln, sondern je eine allgemeine zum Anfügen von einem neuen Element, das Löschen von einem Element etc. Dazu übergebe ich der Funktion im Beispiel void *start, das erste Element einer beliebigen Liste, und benenne sie *p um mit ihr weiterzuarbeiten:
Code: Alles auswählen
/* Funktion: listAdd() *
* Input: void *start - Zeiger auf das erste Objekt *
* void *new - Zeiger auf neues Objekt *
* Output: void *
* Aufgabe: Element am Ende der Liste hinzufügen */
void listAdd( void *start, void *new ) {
void *p = start; // Pointer auf aktuelles Objekt
while( p != NULL ) { // Schleife bis letztes Element gefunden
if( p->next == NULL ) { // Wenn letztes Element
p->next = new; // Dann setze neues Element statt NULL
return; // Beende Funktion
}
else { // Wenn nicht letztes Element
p = p->next; // Sprine
}
}
}
Code: Alles auswählen
lists.c:74:10: warning: dereferencing ‘void *’ pointer
p = p->next; // Sonst springe zu nächsten Element
^
lists.c:74:10: error: request for member ‘next’ in something not a structure or union
Code: Alles auswählen
switch( strNR ) { // p je nach Typ deklarieren
case 1: ; product *p = start;
break;
case 2: ; costumer *p = start;
break;
case 3: ; order *p = start;
break;
case 4: ; costumOrder *p = start;
break;
default: ; void *p = NULL;
break;
}
Code: Alles auswählen
lists.c:32:24: error: conflicting types for ‘p’
case 2: ; costumer *p = start;
^
lists.c:30:23: note: previous definition of ‘p’ was here
case 1: ; product *p = start;
^
...
Ich hab echt keinen Ansatz wie ich das Problem direkt beheben kann oder meine Daten vll anders Strukturieren kann (Listen sind hier schon sinnvoll da es beliebig viele neue User etc geben soll).
Danke schonmal fürs durchlesen und im vorraus für eure Tipps

Gruß
aequatio