我在我的C++应用程序中使用了这个C库,其中一个函数返回一个void*。虽然我不是很精通纯C,但听说void*可以转换为几乎任何其他类型的指针。我也知道我期望从这个函数中得到一个float。
因此,我将void*强制转换为float*并解引用float*,结果崩溃了。太糟糕了!我调试代码,在gdb中让它评估(float)voidPtr,值正是我所期望和需要的!
但是,请注意,在编译时不可能做到这一点。如果我写了float number = (float)voidPtr;,它就无法编译,这是可以理解的。
那么现在问题来了,我该如何从这个可恶的void*中获取我的float?
编辑:感谢H2CO3,问题已经解决,但我看到有很多答案和评论出现和消失,他们不相信我可以在gdb中执行(float)voidPtr。下面是截图。
因此,我将void*强制转换为float*并解引用float*,结果崩溃了。太糟糕了!我调试代码,在gdb中让它评估(float)voidPtr,值正是我所期望和需要的!
但是,请注意,在编译时不可能做到这一点。如果我写了float number = (float)voidPtr;,它就无法编译,这是可以理解的。
那么现在问题来了,我该如何从这个可恶的void*中获取我的float?
编辑:感谢H2CO3,问题已经解决,但我看到有很多答案和评论出现和消失,他们不相信我可以在gdb中执行(float)voidPtr。下面是截图。
void *
在某些情况下是完全可以的,但在OP的情况下,某个人出了问题。也许OP使用库的方式不对。 - user395760