我需要在主函数里边调用下边这个函数
DLPSPEC_ERR_CODE dlpspec_scan_interpret(const void *pBuf, const size_t bufSize,
scanResults *pResults)
/**
* Function to interpret a serialized scan data blob into a results struct
*
* @param[in] pBuf Pointer to serialized scan data blob
* @param[in] bufSize buffer size, in bytes
* @param[out] pResults Pointer to scanResults struct
*
* @Return Error code
*
*/
{
uScanData *pData;
DLPSPEC_ERR_CODE ret_val = (DLPSPEC_PASS);
SCAN_TYPES type;
void *pCopyBuff = (void *)malloc(bufSize); if(pCopyBuff == NULL)
return (ERR_DLPSPEC_INSUFFICIENT_MEM); memcpy(pCopyBuff, pBuf, bufSize); ret_val = dlpspec_scan_read_data(pCopyBuff, bufSize);
if(ret_val < 0)
{
goto cleanup_and_exit;
}
pData = (uScanData *)pCopyBuff;
if(pData->data.header_version != CUR_SCANDATA_VERSION)
{
ret_val = ERR_DLPSPEC_FAIL;
goto cleanup_and_exit;
}
memset(pResults,0,sizeof(scanResults)); type = dlpspec_scan_data_get_type(pData); if(type == HADAMARD_TYPE)
{
ret_val = dlpspec_scan_had_interpret(pCopyBuff, pResults);
}
else if(type == COLUMN_TYPE)
{
ret_val = dlpspec_scan_col_interpret(pCopyBuff, pResults);
}
else if(type == SLEW_TYPE)
{
ret_val = dlpspec_scan_slew_interpret(pCopyBuff, pResults);
}
else
{
ret_val = ERR_DLPSPEC_INVALID_INPUT;
} cleanup_and_exit:
if(pCopyBuff != NULL)
free(pCopyBuff); return ret_val;
}
我在主函数里边定义了一个数组unsigned char scandata[]作为这个函数的输入,函数调用如下:
dlpspec_scan_interpret(scandata,Size,Results);
按照这样调用的话,是不是只是传入了scandata的首地址,在调用的函数里边也没有pBuf++,这样的话就只能传入了一个数据。
我就在想是不是我调用函数错了,不能这样调用,希望各位大佬给解解惑。
感谢!!
DLPSPEC_ERR_CODE dlpspec_scan_interpret(const void *pBuf, const size_t bufSize,
scanResults *pResults)
/**
* Function to interpret a serialized scan data blob into a results struct
*
* @param[in] pBuf Pointer to serialized scan data blob
* @param[in] bufSize buffer size, in bytes
* @param[out] pResults Pointer to scanResults struct
*
* @Return Error code
*
*/
{
uScanData *pData;
DLPSPEC_ERR_CODE ret_val = (DLPSPEC_PASS);
SCAN_TYPES type;
void *pCopyBuff = (void *)malloc(bufSize); if(pCopyBuff == NULL)
return (ERR_DLPSPEC_INSUFFICIENT_MEM); memcpy(pCopyBuff, pBuf, bufSize); ret_val = dlpspec_scan_read_data(pCopyBuff, bufSize);
if(ret_val < 0)
{
goto cleanup_and_exit;
}
pData = (uScanData *)pCopyBuff;
if(pData->data.header_version != CUR_SCANDATA_VERSION)
{
ret_val = ERR_DLPSPEC_FAIL;
goto cleanup_and_exit;
}
memset(pResults,0,sizeof(scanResults)); type = dlpspec_scan_data_get_type(pData); if(type == HADAMARD_TYPE)
{
ret_val = dlpspec_scan_had_interpret(pCopyBuff, pResults);
}
else if(type == COLUMN_TYPE)
{
ret_val = dlpspec_scan_col_interpret(pCopyBuff, pResults);
}
else if(type == SLEW_TYPE)
{
ret_val = dlpspec_scan_slew_interpret(pCopyBuff, pResults);
}
else
{
ret_val = ERR_DLPSPEC_INVALID_INPUT;
} cleanup_and_exit:
if(pCopyBuff != NULL)
free(pCopyBuff); return ret_val;
}
我在主函数里边定义了一个数组unsigned char scandata[]作为这个函数的输入,函数调用如下:
dlpspec_scan_interpret(scandata,Size,Results);
按照这样调用的话,是不是只是传入了scandata的首地址,在调用的函数里边也没有pBuf++,这样的话就只能传入了一个数据。
我就在想是不是我调用函数错了,不能这样调用,希望各位大佬给解解惑。
感谢!!
