Trillian
23-10-2003, 13:24
Huhu,
in meinem aktuellen Projekt benutze ich 2 Typen von Plugins. Beide sind ähnlich aufgebaut, werden fast auf gleiche Weise initialisiert/runtergefahren. Aus diesem Grund möchte ich den Code fürs initialisieren/shutdown nicht doppelt im Binary haben, sondern eine Funktion für beide Plugins nutzen.
Der Header der Plugins sieht so aus:
typedef struct {
void *handle;
void (*shutdown)();
....
} Foo;
Wird folgendes auf jeder Plattform mit einem Standard C Compiler funktionieren?
PluginA *a = plugin_a_new();
PluginB *b = a;
b->shutdown();
d.h. kann ich mich drauf verlassen, dass bei beiden Strukturen der Shutdown-Pointer an der gleichen Adresse liegt? Zumindest mit gcc3 unter x86 funktionierts, aber es sollte auch unter anderen UNIX Systemen laufen.
Falls es so nicht klappt, gibts einen Workaround?
Danke.
in meinem aktuellen Projekt benutze ich 2 Typen von Plugins. Beide sind ähnlich aufgebaut, werden fast auf gleiche Weise initialisiert/runtergefahren. Aus diesem Grund möchte ich den Code fürs initialisieren/shutdown nicht doppelt im Binary haben, sondern eine Funktion für beide Plugins nutzen.
Der Header der Plugins sieht so aus:
typedef struct {
void *handle;
void (*shutdown)();
....
} Foo;
Wird folgendes auf jeder Plattform mit einem Standard C Compiler funktionieren?
PluginA *a = plugin_a_new();
PluginB *b = a;
b->shutdown();
d.h. kann ich mich drauf verlassen, dass bei beiden Strukturen der Shutdown-Pointer an der gleichen Adresse liegt? Zumindest mit gcc3 unter x86 funktionierts, aber es sollte auch unter anderen UNIX Systemen laufen.
Falls es so nicht klappt, gibts einen Workaround?
Danke.