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