作者syura945 (○~)
看板C_and_CPP
標題Re: [問題] typedef enum 的 void* 用法請益
時間Sat Aug 31 22:39:02 2013
推 remember11:謝謝大大詳解,感激。不過我稍早之前亂try,有試出來了 08/27 17:26
→ remember11:我是把我註解error那兩行改成 08/27 17:26
→ remember11:if(data == (void*)eGOPLAYER_STATE_PAUSE) 08/27 17:27
→ remember11:我是亂試出來的,我不熟C++,指標更是新手 08/27 17:28
→ remember11:所以為什麼這樣解可以,會不會有危險,我也不清楚@@ 08/27 17:28
我想這樣應該是錯的,
void cb_func(eGOPLAYER_CALLBACK_TYPE type, void *data)
在上面的引數已經告訴你data是一個指標,
在列舉eGOPLAYER_STATE的宣告裡,eGOPLAYER_STATE_PAUSE等於2,
所以你if(data == (void*)eGOPLAYER_STATE_PAUSE)這一行的意思是:
"當data位址等於0x00000002的時候",我想這條件不太可能有辦法成立。
從名稱來看應該是要取data指標所指向的資料才對,
所以我認為要改成 if(*(eGOPLAYER_STATE*)data == eGOPLAYER_STATE_PAUSE)
才是比較合理的。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 211.74.72.125
推 LPH66:其實到底要怎樣才是對的得去看 play_open 到底是怎麼丟資料 09/01 00:39
→ LPH66:進到這個 callback 裡去的, 寫 void * 也許是因為如我回的 09/01 00:39
→ LPH66:其實它有時會直接把整數值丟進去, 如果真是這樣的話這樣寫 09/01 00:40
→ LPH66:反而可能是對的...總之我們光在這裡猜絕對猜不到是怎樣就是 09/01 00:40