Erf... j'arrive pas à m'en dépatouiller...
Je repars donc de ça :
struct CUSTOM_DATA;
typedef struct
{
SDL_Surface* background;
SDL_Rect bgPosition;
int numIcons;
ICON* iconList;
struct CUSTOM_DATA* customData;
} MODULE_DATA;
MODULE_DATA est en fait une structure générique dont tous les membres sont utilisés par les MODULE :
typedef struct
{
void (*unload)(MODULE_DATA* data);
void (*manage)(MODULE_DATA* data);
MODULE_DATA* data;
} MODULE;
Le
CUSTOM_DATA* customData me permet en fait de dériver cette classe en fonction des modules (introduction, highscrores etc...) avec des données personnelles à chacune de ces classes.
Y a-t-il un problème à avoir alors un
void* customData dans MODULE_DATA, que chaque MODULE va caster après en fonction de ce qu'il utilise pour ses propres besoins ?
En d'autres termes, suis-je toujours sûr d'avoir
sizeof(void*) == sizeof(MODULE_TRUC_DATA*), MODULE_TRUC_DATA pointant sur une structure ou un simple buffer ?
Est-ce qu'un tel cast est toujours safe ?
Sasume : oui, j'ai ça dans le source incriminé, sachant qu'en fait, careers.h inclut déjà module.h :
#include "module.h"
#include "careers.h"