在void参数中将数组传递给回调函数 [英] Passing array to callback function in void parameter
问题描述
具有此原型的回调函数:
A have callback function with this prototype:
void serverAnswer(void *pUserData, int flag);
我需要使用 void 参数将缓冲区 const uint8_t *buf
传递给该函数.如何传递缓冲区,以及如何在函数中访问缓冲区的元素?
I need to pass a buffer const uint8_t *buf
to this function using the void parameter.
How do i pass the buffer, and how can i access the elements of the buffer in the function?
示例(不起作用):
调用:
const uint8_t *buf;
int buf_len = 3;
serverAnswer(&buf, buf_len);
访问缓冲区:
void serverAnswer(void *pUserData, int flag) {
uint8_t* p = (uint8_t *)pUserData;
uint8_t data = p[0];
}
推荐答案
&buf
是一个 const uint8_t **
.您真正想要做的是将 buf
传递给 serverAnswer
,您需要一个 const_cast
以允许从 const进行转换code> 指向
void*
的指针:
&buf
is a const uint8_t **
. What you actually want to do is pass buf
to serverAnswer
, you'll need a const_cast
to allow conversion from a const
pointer to void*
:
const uint8_t* buf;
serverAnswer(const_cast<uint8_t*>(buf), buf_len);
为了避免未定义的行为,您应该将 const
放回 serverAnswer
:
To avoid undefined behaviour you should put the const
back in serverAnswer
:
void serverAnswer(void *pUserData, int flag) {
const uint8_t* p = (const uint8_t *)pUserData;
uint8_t data = p[0];
}
这篇关于在void参数中将数组传递给回调函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!