工程化程式設計實戰callback介面學習筆記

2022-09-13 00:24:30 字數 1018 閱讀 7424

實驗內容:

1. 在vscode下編譯執行lab5-1.tar.gz

2. 通過vscode+gdb除錯程式找出quit命令無法執行的bug產生的原因

通過實驗步驟1的執行結果可知,quit命令無法正常退出,找到列印出「this is a wrong cmd!」對應的**塊,找到findcmd函式,發現是因為沒有找到匹配的命令,再到searchlinktablenode,發現無法返回null的原因是linktable.c中149行的while迴圈無法進入,使得函式在在找到鍊錶最後乙個節點的時候退出迴圈,但沒有判斷最後乙個節點,也就是說無法進入最後乙個節點對應的迴圈,提前結束迴圈返回null,所以將**更改為!= null,遍歷完最後乙個節點再退出迴圈:

原**:

更改之後:

更改之後再次執行:

debug成功!

3. 分析callback介面的執行機制,總結callback介面設計的方法

* 給linktable增加callback方式的介面使得linktable的查詢介面更加通用,有效地提高了介面的通用性

* **函式傳入的引數是函式指標,函式指標用來呼叫其所指向的函式,呼叫者和被呼叫者分開,呼叫者並不關心誰是被呼叫者,可以對特定的事件或條件進行響應,當發生某種事件時系統或其他函式會自動呼叫定義的一段函式

* **函式相當於乙個中斷處理函式,由系統在符合設定條件的時候自動呼叫,為此需要對**函式進行宣告,定義和觸發條件設定,以便系統呼叫

* **機制提供了非常大的靈活性,可以降低模組之間的耦合度

工程化程式設計實戰callback介面學習

工程化程式設計實戰callback介面學習 使用gcc工具進行編譯,這裡用到的命令是 gcc linktable.c menu.c o se2020這個時候會發現報錯,出現了警告,原因是menu.c中缺少了string類庫,無法使用strcmp 匯入include後,重新編譯 3.執行程式 2020...

工程化程式設計實戰callback介面學習筆記

實驗要求一配 置環境1 安裝gcc 將檔案解壓,我這裡放的是c program files mingw w64 mingw bin資料夾 2 在系統變數中的path新增環境變數 開啟命令列視窗,輸入gcc v看見gcc版本相關資訊,安裝完成 3 安裝vscode,並安裝c c 偵錯程式 環境配置完成...

工程化程式設計實戰callback介面學習筆記

這是高軟的第二次作業,主要就是程式設計實戰,這次確實學到了東西,以前只是直到 函式,但是不知道 函式是幹嘛用的。一 實驗要求 在vscode下編譯執行 通過vscode gdb除錯程式找出quit命令無法執行的bug產生的原因 分析callback介面的執行機制,總結callback介面設計的方法 ...