Moinsen!
Erklärung meines Problems findet sich im code-schnipsel:
// Haupt-Struct indem alle wichtigen Variablen vorhanden sein sollen.
typedef struct
{
...
void *pointer; //statt void hätte ich lieber t_base, das wäre
allerdings ein Zirkelbezug der ersten typedef...
...
}t_base;
// Pointer auf Funktionen
typedef void (*fp)(t_base *);
// Tabelle
typedef struct
{
const char *str;
fp funktionspointer;
}t_table;
void function(t_base *pbase)
{
// hier passiert irgendwas...
}
void aux(t_base *pbase)
{
// !! Hier ist es für mich interessant.
// ich möchte über base die Funktion "function" starten
// so geht es nicht:
pbase->pointer[0]->function(base);
// so auch nicht:
pbase->pointer[0].function(base);
// Wie geht es richtig?
}
void main(void)
{
t_base base, *pbase = &base;
t_table table[] =
{
{"string1", function },
{"", 0}
}
pbase->pointer = &table; // Adresse der Tabelle in base.pointer
eintragen.
aux(pbase);
}
Gast
#1425029
> void *pointer; //statt void hätte ich lieber t_base, das wäre > allerdings ein Zirkelbezug der ersten typedef... Ich gehe davon aus, dass pointer ein Zeiger auf t_table sein soll. Ich habe dein Programm etwas zurechtgebogen, so dass es zumindest kompiliert. Ob es das Richtige tut, musst du entscheiden ;-)
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
Auf lange Erklärungen habe ich jetzt keine Lust. Frag einfach nach, an welchen Stellen du etwas nicht verstanden hast :)
Gast
#1425033
PS: Ich sehe gerade, dass die erste Zeile in meinem Code überflüssig ist. Sie schadet aber auch nicht.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.