Antes tenía una estructura C
typedef struct c { int cc; }CS;
Solía llamar a una función de biblioteca decir int GetData (CS * x) que me estaba devolviendo la estructura C anterior con datos.
GetData(CS *x)
La función llamada solía ser como:
CS CSobj; GetData(&CSObj);
Ahora hay dos estructuras dicen C y D
typedef struct c { int cc; }CS; CS CSobj; typedef struct d { int dc; int dd; }DS; DS DSobj;
La función GetData () se ha modificado a GetData (void * x). Tengo que llamar a la función de biblioteca decir int GetData (void * x) que me devolverá una de las estructuras anteriores a través de ese parámetro void *. El tipo de retorno de la función indica qué estructura se devuelve.
El problema es al llamar a la función GetData () cómo y qué parámetro pasar, ya que no sé qué estructura devolverá la función. ¿Alguna forma de salir de este problema?
Podrías usar un sindicato
// define union of two structs union DorC { DS DSobj; CS CSobj; } CorD; // call using union rc = GetData(&CorD); if (rc == Ctype) { // use CorD.CSobj; } else { // use CorD.DSobj; }
Advertencia no probado syntax código comprobado!