左值作为一元'&'操作数

0 c linux compilation visual-c++

调用函数时出现问题如下:

功能调用:

Sbac_DecodeBin(pstSlice->pstBAC,&(UINT8)ui32Abs_Mvd_G_0[0],
pstSlice->pstCtxModel->aucABS_MVD_GREATER_0_1_FLAG,0,
pstSlice->pstValMps->aucABS_MVD_GREATER_0_1_FLAG,BSHandle);
Run Code Online (Sandbox Code Playgroud)

功能声明:

VOID Sbac_DecodeBin(Init_BAC *pstBAC,UINT8* piBinValue,UINT8* pucSateIdx,
UINT8 CtxInc,UINT8* pucValMPS,HEVCD_BS_HANDLE BSHandle)
Run Code Online (Sandbox Code Playgroud)

上面的代码在Visual c + + 2008中没有给出任何compilcation错误但是在linux中使用makefile创建目标文件时gcc -c我得到了错误:

lvalue required as unary '&' operand 
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这是什么问题?

edg*_*eis 5

将调用中的第二个参数更改 &(UINT8)ui32Abs_Mvd_G_0[0](UINT8 *)ui32Abs_Mvd_G_0.

错误消息的原因是您不能获取不是左值的内容的地址.来自uint32 - > uint8的演员表不符合资格.从uint32*到uint8*的演员阵容.

顺便说一句:你正在寻找潜在的终结傻瓜.在little endian上,你传递了uint32的LSB的地址,在big endian上你传递了MSB的地址.