我有以下代码:

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

    if (pArg)
       (STRUCTA *)pArg = abc;
}

问题是,此代码引发以下警告:
警告:赋值的目标不是一个真正的左值;这将是将来的一个硬错误
如果没有转换,我将得到另一个警告,我试图取消引用一个空指针。。。
由于警告被视为错误,我不能使用这段代码-但我真的不能使用除void*之外的任何其他指针类型作为参数。我错过了一个优雅的解决方案吗?
有什么办法能使这工作吗?

最佳答案

STRUCTA指定给指向STRUCTA的指针。
而是:

*((STRUCTA *)pArg) = abc;

10-06 10:21