[問題] function create的方式

看板C_and_CPP作者 (0.0)時間9年前 (2016/09/27 10:12), 編輯推噓3(302)
留言5則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Android 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) None 問題(Question): 在網路上看到這段code 有人知道這種寫法嗎? jpege_engine_hw_create 呼叫自己?這是要? 另外就是找不到是誰去call這個副程式 會是load library時就被呼叫嗎? static void jpege_engine_hw_create(jpege_engine_obj_t *p_obj, jpege_hw_obj_t encoder) { if (p_obj) { // Destroy previous engine if it exists if (p_obj->destroy) { p_obj->destroy(p_obj); } p_obj->create = &jpege_engine_hw_create; p_obj->init = &jpege_engine_hw_init; p_obj->check_start_param = &jpege_engine_hw_check_start_param; p_obj->start = &jpege_engine_hw_start; p_obj->abort = &jpege_engine_hw_abort; p_obj->destroy = &jpege_engine_hw_destroy; p_obj->p_engine = NULL; p_obj->encoder = encoder; p_obj->is_initialized = false; } } 補充說明(Supplement): code來源: https://goo.gl/UoNaJ2 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.127.173.192 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1474942361.A.C21.html

09/27 10:23, , 1F
關鍵字: 函式指標
09/27 10:23, 1F

09/27 10:31, , 2F
這是用 C 寫 OO 的做法,把 p_obj 想成 this 指標就是
09/27 10:31, 2F

09/27 10:32, , 3F
可以看看 Axel Schreiner 寫的 https://goo.gl/WrD6Kc
09/27 10:32, 3F

09/27 11:04, , 4F
從jpege.c 1465行來看 p_obj->create是用來做檢查的
09/27 11:04, 4F

09/27 11:05, , 5F
不會用來呼叫
09/27 11:05, 5F
文章代碼(AID): #1NwTMPmX (C_and_CPP)