3 回答

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超4個(gè)贊
typedef void(*lpFunc)(void*);
然后定義一個(gè)對(duì)象: lpFunc hFun;
假設(shè)你的回調(diào)函數(shù)是:fun1();則:hFun=(lpFunc*)fun1;
libvlc_set_exit_handler (libvlc_instance_t *p_instance, hFun, void *opaque)

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

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
void(*cb)(void *)
注意:這個(gè)函數(shù)名是void(*cb)是一個(gè)強(qiáng)制類型轉(zhuǎn)換,而要的參數(shù)是" void* ",是一個(gè)void型函數(shù)的指針,直接傳函數(shù)地址就可以了;&funtion();
如果funtion() 已經(jīng)是void* 類型,那么直接function();
- 3 回答
- 0 關(guān)注
- 942 瀏覽
添加回答
舉報(bào)