C Fonctions prenant void * paramètre de fonction

Auparavant j’avais une structure C

typedef struct c { int cc; }CS; 

J’avais l’habitude d’appeler une fonction de bibliothèque, telle que int GetData (CS * x) qui me renvoyait la structure C ci-dessus avec des données.

 GetData(CS *x) 

L’appel de fonction ressemblait à:

 CS CSobj; GetData(&CSObj); 

Maintenant, il y a deux structures dites C et D

 typedef struct c { int cc; }CS; CS CSobj; typedef struct d { int dc; int dd; }DS; DS DSobj; 

La fonction GetData () a été modifiée en GetData (void * x). Je dois appeler la fonction de bibliothèque dire int GetData (void * x) qui me renverra l’une des structures ci-dessus via ce paramètre void *. Le type de retour de la fonction indique quelle structure est renvoyée.

Le problème est lors de l’appel de la fonction GetData () comment et quel paramètre à passer car je ne sais pas quelle structure la fonction retournera. Un moyen de sortir de ce problème?

Vous pourriez utiliser un syndicat

  // 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; } 

Avertissement code non vérifié non vérifié!