将值赋给C中的非空void*指针的正确方法应该是什么?

TCS*_*rad 0 c pointers casting void-pointers compiler-warnings

我有以下代码:

void funcA(void*   pArg)
{
    STRUCTA abc;
    .
    . // Some processing here
    .

    if (pArg)
       (STRUCTA *)pArg = abc;
}
Run Code Online (Sandbox Code Playgroud)

问题是,这段代码抛出了以下警告:警告:赋值目标不是真正的左值; 这将是一个艰难的错误

如果没有演员阵容,我会再次发出警告,我正试图取消引用无效指针......

由于警告被视为错误,我无法使用此代码 - 但我真的不能使用任何其他指针类型而不是void*作为参数.我缺少一个优雅的解决方案吗?

有没有办法让这项工作?

Mar*_*tos 5

(STRUCTA *)pArg是指针类型,而abc不是.您需要取消引用指针:

*(STRUCTA *)pArg = abc;
Run Code Online (Sandbox Code Playgroud)