我有以下代码:
void funcA(void* pArg)
{
STRUCTA abc;
.
. // Some processing here
.
if (pArg)
(STRUCTA *)pArg = abc;
}
问题是,这段代码抛出以下警告: 警告:赋值目标不是真正的左值;这将是 future 的硬错误
如果没有强制转换,我将收到另一个警告,提示我正在尝试取消引用一个空指针...
由于警告被视为错误,我不能使用这段代码——但我真的不能使用除 void* 以外的任何其他指针类型作为参数。我是否缺少一个优雅的解决方案?
有什么方法可以让它工作吗?
最佳答案
(STRUCTA *)pArg
是指针类型,而 abc
不是。您需要取消引用指针:
*(STRUCTA *)pArg = abc;
关于c - 在 C 中为非空 void* 指针赋值的正确方法应该是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4343701/