Re: [問題] 作為一個程式設計人員,有可以完全不碰C …

看板C_and_CPP作者 (鬼翼&娃娃魚)時間16年前 (2009/10/25 23:30), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串5/11 (看更多)
※ 引述《mahoihei (mathematic)》之銘言: : function point......我爆頭也想不到有什麼用。。。 : ※ 編輯: mahoihei 來自: 119.236.211.97 (10/25 22:22) 正好小弟工作寫driver有用到function pointer(in C) 所以簡單回個文寫一下我自己工作上會用到的例子吧.... driver要做的工作, 就是和AP/OS/HW三者做溝通.... 一般來說, 至少會design幾個framework來切割.... 比如說對AP的部份....(略) 對OS的部份, 不同OS提供不同的Device Driver Model.... 也可能需要不同的OS Callback, 或者不同接觸HW的路徑.... 對HW的部份, 你可能推出不同幾代HW, 每代能力與限制都不同.... 甚至是不同市場區隔的HW, 但是為了driver維護容易用同framework.... 上述這些情況, 你可以在driver裡寫一堆if/else/switch甚至goto.... 但是今天這個HW啟動這個driver load進OS, OS與HW就不會再變了.... driver要為這些明明不可能會變的if/else/switch浪費多少無謂CPU cycle?? 更不用提driver內部如果夠模組化, 也會有相當程度可run-time抽換的部份.... 把所以東西全部分開各自獨立, 與把所有東西都攪和在一起.... 保證你的code會極度的難看, 也極度難以維護, 甚至難以多人修改.... 至少小弟接觸到這個function pointer的用法就是.... 兼具code的維護性, 彈性, 延展性, 同時執行時更有效率.... 就像另外一位回文的j大, 有些東西等你學會了練習過了.... 還要一點機緣, 你可能才知道這些東西到底有什麼用, 好用在哪:) == Edit補充一下AP端看過的用法, MS Windows上凡是超過OpenGL 1.1的功能.... 全部得用GetProcAddress()搭配function pointer拿回來才能始用.... Run-Time你才能LoadLibrary要回來的東西也是同樣的道理.... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.165.232.71 ※ 編輯: VictorTom 來自: 118.165.232.71 (10/25 23:34)

10/25 23:48, , 1F
file_operations XD
10/25 23:48, 1F

10/25 23:48, , 2F
function pointer的常見例子:thread的參數~
10/25 23:48, 2F

10/25 23:50, , 3F
人家和thread不熟啦XD
10/25 23:50, 3F

10/25 23:58, , 4F
design pattern的state pattern 也是很好的範例
10/25 23:58, 4F
文章代碼(AID): #1Av6yWR7 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 5 之 11 篇):
文章代碼(AID): #1Av6yWR7 (C_and_CPP)