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)
谁能告诉我这是什么问题?
将调用中的第二个参数更改
&(UINT8)ui32Abs_Mvd_G_0[0]为(UINT8 *)ui32Abs_Mvd_G_0.
错误消息的原因是您不能获取不是左值的内容的地址.来自uint32 - > uint8的演员表不符合资格.从uint32*到uint8*的演员阵容.
顺便说一句:你正在寻找潜在的终结傻瓜.在little endian上,你传递了uint32的LSB的地址,在big endian上你传递了MSB的地址.