看板 C_and_CPP 關於我們 聯絡資訊
推 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