3 回答

TA貢獻1843條經驗 獲得超7個贊
做個回調函數和要求的類型一致,所做事情符合要求,把函數名也就是函數地址傳入,如果有一批這樣的函數用函數指針也可以!
libvlc_set_exit_handler (libvlc_instance_t *p_instance, void(*cb)(void *), void *opaque)
第二個參數是 void(*cb)(void *)
void func (void *opaque )//這就是回調函數,opaque 是回調函數的參數
{
///////////// 回調函數代碼
}
調用的代碼:
void *opaque= ....//libvlc_set_exit_handler 要求的參數,沒有要求的話隨便什么值。
libvlc_set_exit_handler (p_instance, func, opaque);
例如
void func (void *opaque )//這就是回調函數,opaque 是回調函數的參數
{
int n=*((int *)opaque);
n*=n;
*((int *)opaque=n;
}
1)調用的代碼
int t=20;
libvlc_set_exit_handler (p_instance, func, &t);
2)調用的代碼
void *opaque=&t;
libvlc_set_exit_handler (p_instance, func, opaque);

TA貢獻1848條經驗 獲得超10個贊
void(*cb)(void *)
注意:這個函數名是void(*cb)是一個強制類型轉換,而要的參數是" void* ",是一個void型函數的指針,直接傳函數地址就可以了;&funtion();
如果funtion() 已經是void* 類型,那么直接function();
- 3 回答
- 0 關注
- 936 瀏覽
添加回答
舉報