Il progetto è difficile, questo è da fissarlo in testa.
Eccoti un esempio per le strutture derivate.
codice:
struct V1
{
int cSize;
int campo1;
};
struct V2
{
int cSize;
int campo1;
int campo2;
};
Le 2 strutture evidentemente differiscono per la loro grandezza.
Dunque puoi usarle entrambe in un'unica funzione che prende un puntatore alla struttura base e fare poi considerazioni sulla grandezza. Esempio pratico
codice:
V2 v;
v.campo1 = 2;
v.campo2 = 3;
v.cSize = sizeof(V2);
Funzione((V1*)&V2);
void Funzione(V1 *p)
{
if (p->cSize == sizeof(V1))
{//codice per V1}
if (p->cSize == sizeof(V2))
{V2 *pp = (V2*)&p; //altro codice}
}