J'ai du mal à donner une valeur de structure à une interface C pour une file d'attente qui gère la file d'attente comme une liste liée. Elle conserve les données sous forme de pointeurs void pour permettre à l'interface de gérer n'importe quelle donnée de manière générique. Je passe la valeur comme une référence de pointeur qui est ensuite sauvegardée comme un pointeur vide. Plus tard, lorsqu'elle est renvoyée, je ne sais pas comment remettre le pointeur vide dans la valeur d'origine.
Que dois-je faire ? Voici l'exemple de structure.
typedef struct MyData {
int mNumber;
} MyData;
Pour simplifier le tout, j'ai créé une fonction factice qui simule tout en quelques lignes de code.
void * give_and_go(void *data) {
void *tmp = data;
return tmp;
}
Vous pouvez voir qu'elle prend un pointeur void, le définit comme une variable locale et le renvoie. Maintenant, je dois récupérer la valeur originale.
MyData inVal;
inVal.mNumber = 100;
void * ptr = give_and_go(&inVal);
MyData outVal; // What converts ptr to the out value?
C'est là que je suis coincé. J'utilise Xcode et il ne me permet pas d'effectuer un simple cast ptr vers MyData ou d'autres alternatives que j'ai essayées.
Toute aide est appréciée.