将 double as (void *) 传递给函数

NoO*_*oOb 2 c pointers

我写了一个接收一个函数void *类型参数,我可以通过该计划char*,并int在接收功能我读什么我的期望。

看起来像:

void __declspec(dllexport) void* func(void *);
Run Code Online (Sandbox Code Playgroud)

接下来我尝试通过double这里:

double d = 3.14;
(*funcPtr)( (void *)d ); 
Run Code Online (Sandbox Code Playgroud)

但出现错误:

error: invalid cast from type 'double' to type 'void*'
Run Code Online (Sandbox Code Playgroud)

然后我通过方法将 double 传递给 void 参数线程并尝试这种方式:

double d = 3.14;
double *p_d = (double *)d;
(*funcPtr)( (void *)p_d );
Run Code Online (Sandbox Code Playgroud)

但仍然是同样的运气:

error: invalid cast from type 'double' to type 'double*'
Run Code Online (Sandbox Code Playgroud)

我缺少什么以及如何解决我的问题?我认为一个解决方案是定义几个typedef函数指针。

小智 5

double d = 3.14;
double *p_d = &d;
Run Code Online (Sandbox Code Playgroud)

您不会将类型转换为需要引用它的指针。当您需要使用指针中的值时,您可以像这样取消引用它。

double new_d = *p_d;
Run Code Online (Sandbox Code Playgroud)

在接收p_d为空指针的函数中,您必须在使用前将该指针转换回双指针。

喜欢

void func(void *p_d)
{
    double new_d = *(double*)p_d;
    ...
}
Run Code Online (Sandbox Code Playgroud)