我正在编写一个解释器,我希望能够将函数返回的任何值存储到void指针中.我没有问题存储int和各种指针作为void指针,但我在尝试将double作为void指针进行转换时遇到错误.我知道双精度存储的位置与整数和指针位不同,但我不明白为什么我不能将任何我想要的位放入指针(假设它有足够的内存分配),然后将它们取出,把它们当成双重的.
是否可以使用我不知道的语法将双精度转换为void指针,或者我是否误解了void指针的工作原理?
Dav*_*nan 14
在许多系统中,a double是8字节宽,指针是4字节宽.因此,前者不适合后者.
你似乎在滥用void*.您的解决方案将涉及分配存储空间,该存储空间至少与您需要存储在某些类似变体的结构中的最大类型一样大,例如a union.