void* ist buchstäblich schweben, wie Sie gewirkt?

So, ich bin mit dieser C-Bibliothek, die in meinem C++ - app, und eine der Funktionen liefert einen void*. Nun ich bin nicht das Schärfste mit reinem C, aber habe gehört, dass ein void* umgewandelt werden kann, um so ziemlich jede andere *-Typ. Ich weiß auch, dass ich erwarte, dass der Schwimmer am Ende irgendwo von dieser Funktion.

Also warf ich die void* float* und dereferenzieren der float*, Absturz. verdammt!.
Ich Debuggen Sie den code, und in gdb, lassen Sie es bewerten (float)voidPtr und niedrige und siehe da der Wert ist das, was ich erwarte und brauche!

Aber warten Sie, es ist unmöglich, die gleiche, die während der Kompilierung. Wenn ich Schreibe float number = (float)voidPtr; es wird nicht kompiliert, was natürlich verständlich ist.

So, jetzt die Frage, wie bekomme ich meine float aus diesem fricking void*?

EDIT: Dank H2CO3 dieses Problem gelöst wurde, aber ich sehe viele Antworten und Kommentare erscheinen und dissappering nicht glauben, dass ich tun konnte, (float)voidPtr in gdb. hier ist der screenshot.

void* ist buchstäblich schweben, wie Sie gewirkt?

  • Natürlich, eine bessere Lösung ist, landen nicht in einer situation wie dieser zu beginnen.
  • so OP geben sollte, auf eine ganze Bibliothek, denn es nutzt void-Zeiger?
  • Nein, ich spreche von einem nicht-Zeiger wird interpretiert als ein void-Zeiger. void * ist völlig in Ordnung, in einigen Fällen, aber in OP ' s Fall, dass jemand irgendwo nach oben geschraubt. Vielleicht OP ist mit der Bibliothek falsch.
  • Vielleicht kann die Funktion gibt einen Zeiger oder einen aktuellen Wert, je nachdem, wie es aufgerufen wird. Ohne zu sehen, die Bibliothek, können wir nicht wirklich beurteilen.
InformationsquelleAutor xNidhogg | 2013-03-09
Schreibe einen Kommentar