我写了一个接收void *
类型参数的函数和我可以传递char*
和int
的计划,并在接收函数我读任何我期望的。
看起来像:
void __declspec(dllexport) void* func(void *);
接下来我尝试在这里传递一个double
:
double d = 3.14;
(*funcPtr)( (void *)d );
但出现错误:
error: invalid cast from type 'double' to type 'void*'
然后我经历了method to pass double to void argument线程并尝试这种方式:
double d = 3.14;
double *p_d = (double *)d;
(*funcPtr)( (void *)p_d );
但还是一样的运气:
error: invalid cast from type 'double' to type 'double*'
我缺少什么以及如何解决我的问题?我认为一个解决方案是定义几个 typedef
函数指针。
最佳答案
double d = 3.14;
double *p_d = &d;
您不需要将类型转换为需要引用 的指针。 当您需要使用指针中的值时,您可以像这样取消引用它。
double new_d = *p_d;
并且在将 p_d
作为空指针接收的函数中,您必须在使用前将指针转换回双指针。
喜欢
void func(void *p_d)
{
double new_d = *(double*)p_d;
...
}
关于c - 将 double as (void *) 传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65205467/