Hallo zusammen,
ich habe eine Design Frage, ich habe in C eine Struktur, welche
beinhaltet wieder mehrere Arrays mit anderen Strukturinstanzen und
Funktionszeiger.
Beispiel:
1 | typedef void (* ABCFuncType)(void);
|
2 | typedef struct ConfigStruct ConfigStructType;
|
3 | typedef struct MyExt1Struct MyExt1StructType;
|
4 | typedef struct MyExt2Struct MyExt2StructType;
|
5 | typedef struct MyExt3Struct MyExt3StructType;
|
6 |
|
7 | struct MyExt1Struct
|
8 | {
|
9 | int a;
|
10 | int b;
|
11 | ABCFuncType Routine;
|
12 | };
|
13 |
|
14 | struct MyExt2Struct
|
15 | {
|
16 | int a;
|
17 | int b;
|
18 | int c;
|
19 | ABCFuncType Routine;
|
20 | };
|
21 |
|
22 | struct MyExt3Struct
|
23 | {
|
24 | int a;
|
25 | int b;
|
26 | boolean xyz;
|
27 | boolean aaa;
|
28 | ABCFuncType Routine;
|
29 | };
|
30 |
|
31 | struct ConfigStruct
|
32 | {
|
33 | const void * MyStructType;
|
34 | int length;
|
35 | };
|
Die Struktur ConfigStruct wird an eine Funktion z.B.
MainFct(ConfigStructType config) übergeben, wo die Daten weiter
verarbeitet werden. Die Funktion kann nur einen Parameter, nämlich diese
Struktur annehmen.
Jetzt ist so, dass diese Funktion (d.h. MainFct) nicht weiß, ob
MyStructType ist von Typ: MyExt1StructType, MyExt2StructType oder
MyExt3StructType.
Meiner Meinung nach ich habe drei Möglichkeiten:
1) In ConfigStruct ein ENUM hinzufügen, damit man weiß wie man casten
soll => Nachteil kostet Laufzeit, da ständig gecastet werden muss :/
2) Anstatt 3 Strukturen, alle mögliche attribute in nur einer Struktur
packen => Nachteil kostet Speicher, was auch knapp ist.
Zur Info: deswegen 3 Strukturen, da die Attributen
Konfigurationsabhängig sind. Von der Struktur: MyStructType werden ca.
200-300 Instanzen angelegt ;)
Kennt Ihr vielleicht eine Lösung für solche Probleme?
Grüße