看板 C_and_CPP 關於我們 聯絡資訊
小弟最近用c (不是c++) 在寫driver 遇到一個問題 該device的指令有數十個 我把常用到的指令包成一個個function 正常狀態下每個指令送出後會得到一個device的回傳值 但也有可能有錯誤的回傳值 錯誤的情況固定分3種 如ErrA ErrB ErrC 目前我這些function包裝成 cmd_err_type func( result_type* a1, para1_type a2, para2_type a3, ... ) 也就是回傳值是 錯誤的情況 或是 成功 如果成功的話 會改變a1 而該指令所需的參數就放在a1的後面 各function固定回傳 cmd_err_type 但參數就有變化 而依各指令回傳的cmd_err_type 又有固定3種處理方式 一種是錯誤的話ErrA就不斷重送 ErrB就重送10次再錯印出字串 ErrC送一event給另一個thread 一種是錯誤的話就 不理會 繼續下去 一種是錯誤的話就 3秒內重送 3秒以後還錯就印出某字串 問題就在這裡了 這三種情況應該可以寫成三個函數 dealErr1( cmd_err_type, ??? dealErr2( cmd_err_type, ??? dealErr3( cmd_err_type, ??? 但後面???的部份不知道要怎麼樣寫 由於要重送指令 所以應該要吃一個function pointer和參數 如果各function的參數一樣 我想就可以用function pointer 但各function參數又不一樣 請問架構上是否有什麼好的改良方式呢或什麼好的寫法? 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.221.195
loveme00835:Refactoring: Preserve Whole Object 06/10 01:16
alongalone:把他寫成跟呼叫 pthread的方式看看,參數包成 struct.. 06/10 09:18
Arton0306:感謝 我再研究看看 06/11 18:20