亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C++ 回調函數怎么傳?

C++ 回調函數怎么傳?

森林海 2019-02-07 20:07:07
請問,有個開源軟件提供的接口是:libvlc_set_exit_handler (libvlc_instance_t *p_instance, void(*cb)(void *), void *opaque),第一個參數我傳正確了,第二個參數是個回調函數,我該怎么傳?
查看完整描述

3 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

typedef void(*lpFunc)(void*);
然后定義一個對象: lpFunc hFun;
假設你的回調函數是:fun1();則:hFun=(lpFunc*)fun1;
libvlc_set_exit_handler (libvlc_instance_t *p_instance, hFun, void *opaque)

查看完整回答
反對 回復 2019-03-25
?
藍山帝景

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);



查看完整回答
反對 回復 2019-03-25
?
慕桂英546537

TA貢獻1848條經驗 獲得超10個贊

void(*cb)(void *)
注意:這個函數名是void(*cb)是一個強制類型轉換,而要的參數是" void* ",是一個void型函數的指針,直接傳函數地址就可以了;&funtion();

如果funtion() 已經是void* 類型,那么直接function();

查看完整回答
反對 回復 2019-03-25
  • 3 回答
  • 0 關注
  • 936 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號