Felix G
26.04.2009, 10:20
Hallo Leute,
ich frage mich gerade wie sich folgendes Konstrukt am sinnvollsten in C umsetzen lässt:
typedef struct
{
type_B B;
} type_A;
typedef uint8_t (type_B*)(type_A*);
Das Problem dabei ist natürlich, daß egal in welcher Reihenfolge diese beiden Deklarationen in der .h Datei stehen, sich dieser Code nicht kompilieren lässt (im dargestellten Fall wird type_B benutzt bevor er deklariert wurde, und wenn man die beiden Deklarationen vertauscht ist es eben type_A).
Ich könnte natürlich den Funktionspointer umbauen, und als Parameter ein void* verwenden, aber die Lösung gefällt mir wegen der fehlenden Typprüfung nicht besonders.
ich frage mich gerade wie sich folgendes Konstrukt am sinnvollsten in C umsetzen lässt:
typedef struct
{
type_B B;
} type_A;
typedef uint8_t (type_B*)(type_A*);
Das Problem dabei ist natürlich, daß egal in welcher Reihenfolge diese beiden Deklarationen in der .h Datei stehen, sich dieser Code nicht kompilieren lässt (im dargestellten Fall wird type_B benutzt bevor er deklariert wurde, und wenn man die beiden Deklarationen vertauscht ist es eben type_A).
Ich könnte natürlich den Funktionspointer umbauen, und als Parameter ein void* verwenden, aber die Lösung gefällt mir wegen der fehlenden Typprüfung nicht besonders.