Re: [問題] typedef enum 的 void* 用法請益

看板C_and_CPP (C/C++)作者 (○~)時間12年前 (2013/08/31 22:39), 編輯推噓1(103)
留言4則, 1人參與, 最新討論串3/3 (看更多)
推 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

09/01 00:39, , 1F
其實到底要怎樣才是對的得去看 play_open 到底是怎麼丟資料
09/01 00:39, 1F

09/01 00:39, , 2F
進到這個 callback 裡去的, 寫 void * 也許是因為如我回的
09/01 00:39, 2F

09/01 00:40, , 3F
其實它有時會直接把整數值丟進去, 如果真是這樣的話這樣寫
09/01 00:40, 3F

09/01 00:40, , 4F
反而可能是對的...總之我們光在這裡猜絕對猜不到是怎樣就是
09/01 00:40, 4F
文章代碼(AID): #1I8W0Ave (C_and_CPP)
文章代碼(AID): #1I8W0Ave (C_and_CPP)