8

そのため、C++ アプリでこの C ライブラリを使用していますが、関数の 1 つが void* を返します。現在、私は純粋な C に精通しているわけではありませんが、void* は他のほとんどすべての * 型にキャストできると聞いています。また、この関数のどこかで最後にフロートが期待されることも知っています。

したがって、void* を float* にキャストし、float* を逆参照すると、クラッシュします。くそー!私はコードをデバッグし、gdb でそれを評価(float)voidPtrして低くし、値が私が期待し、必要としているものであることを確認します!

しかし、待ってください。コンパイル時に同じにすることは不可能です。私が書いた場合float number = (float)voidPtr;、それはコンパイルされません。これは理解できます。

では、問題は、どうすればフロートをこのフリック ボイドから抜け出すことができるかということです*?

編集: H2CO3 のおかげでこれは解決されましたが、多くの回答とコメントが表示され、gdb で (float)voidPtr を実行できるとは信じられずに消えていきます。これがスクリーンショットです。

ここに画像の説明を入力

4

2 に答える 2

16

ポインタを使用してみてください:

void *theValueAsVoidPtr = // whatever

float flt = *(float *)&theValueAsVoidPtr;
于 2013-03-09T17:22:57.533 に答える