Quindi sto usando questa libreria C nella mia app C++, e una delle funzioni restituisce un void *. Ora non sono il più acuto con la pura C, ma ho sentito che un vuoto * può essere lanciato su praticamente qualsiasi altro tipo *. So anche che mi aspetto un float alla fine da qualche parte da questa funzione.void * è letteralmente fluttuante, come lanciare?
Così getto il void * a un float * e la dereferenziazione del float *, crash. maledettamente !. Eseguo il debug del codice e in gdb lascio valutare (float)voidPtr
e basso ed ecco che il valore è quello che mi aspetto e di cui ho bisogno!
Ma aspetta, è impossibile lo stesso durante la compilazione. Se scrivo float number = (float)voidPtr;
non viene compilato, il che è comprensibile.
Quindi ora la domanda, come faccio a liberarmi di questo vuoto *?
EDIT: Grazie a H2CO3 questo è stato risolto, ma vedo molte risposte e commenti che appaiono e scompaiono non credendo che potrei fare (float) voidPtr in gdb. ecco lo screenshot.
Ovviamente, una soluzione migliore non finisce in una situazione come questa per cominciare. – delnan
@delnan, quindi OP dovrebbe rinunciare a un'intera libreria perché utilizza i puntatori void? –
@CoreyOgburn No, sto parlando di un non-pointer interpretato come un puntatore vuoto. 'void *' va perfettamente bene in alcuni casi, ma nel caso di OP, qualcuno da qualche parte ha sbagliato. Forse OP sta usando la libreria errata. – delnan