Modularisierungs Problem
-
Hallo,
ich habe ein kleines Problem auf Grund meiner Modularisierung.typen.h & typen.c :
beinhaltet die Typen (plist und telement) + Funktion compareElementliste.c & liste.h :
beinhaltet meine ganzen Listen-Funktion auf Basis der Typen plist und telement
verwendet von typen.h:
Typ plist
Typ telement
Funktion compareElementfunctions.c & function.h :
arbeitet mit mehreren Listen unter Verwendung von liste.h.
Bei allen bislang verwendeten Listen muss telement bloß int sein.
Allerdings möchte ich nun eine weitere Liste verwenden, wo telement vom typ cstring ist.
Im Prinzip ist das ganz einfach zu lösen, jedoch möchte ich Redundanz vermeiden. Dank meiner Modularisierung müsste ich mir einfach nur eine Kopie von typen.h & typen.c erzeugen und sie modifizieren, da ich aber bereits liste.h mit typen.h in functions.c verwende, ist das leider nicht so einfach ohne auch liste.c & liste.h zu kopieren.
(es wäre auch möglich die Funktion, die einen anderen telement Typ braucht, auszulagern, allerdings muss sie mit functions.c zusammen in einem Programm verwendbar sein.)Ich hoffe, ihr könnt mir weiterhelfen.
mfg
michael
-
ich habe ein kleines Problem auf Grund meiner Modularisierung.
Dann ändere deine Modularisierung.
Für eine Liste hat sich folgende Konstruktion mehrfach als hilfreich erwiesen
#define TypIsInt 0 #define TypIsfloat 1 #define TypIsPrivateStruct_1 2 #define TypIsPrivateStruct_1 3 typedef struct { .... } PrivateStruct_ typedef struct { ListenVerwaltung *next; Listenverwaltung *prev; unsigned int ContentsTyp; void *DataBag; } ListenVerwaltung;
Das heist du kannst die ganzen Verwaltungsaktionen in der ListenVerwaltung erledigen, und durch den
void pointer beliebige Datentasche und diese wenn es Sinn macht sogar gemischt in einer Liste speichern.
Den Type jeder Datentasche kann man an ContentsTyp erkennen.Viel Spaß
-
Danke für den Tipp!