資源:http://pan.baidu.com/s/1pJ0qAIv
顯示報錯,在這個區域內未聲明。添加頭文件String.h
上面顯示不能打開輸出文件,而後我到工程目錄文件夾中找,並無生成menu.exe二進制文件。
而後我直接在終端利用gcc命令生成menu.exe
gcc -o menu menu.c linktable.c
按照錯誤提示,我在工程目錄下新建一個build文件夾,而後將gcc生成得menu.exe文件粘貼到這裏,發現仍是有別的錯誤。
因而我放棄了,仍是用終端命令運行程序。
查看結果,使用quit發現沒有退出程序,而是提示worng cmd,顯然是錯誤的。函數
2ui
gcc -g linktable.c menu.c -o menu gdb menu ``` ![](https://img2020.cnblogs.com/blog/1880361/202003/1880361-20200318202527400-1133813424.png) ![](https://img2020.cnblogs.com/blog/1880361/202003/1880361-20200318203440424-716929217.png) ![](https://img2020.cnblogs.com/blog/1880361/202003/1880361-20200318203500514-2026943992.png) ![](https://img2020.cnblogs.com/blog/1880361/202003/1880361-20200318203704873-1509894158.png) 因爲返回了NULL, ![](https://img2020.cnblogs.com/blog/1880361/202003/1880361-20200318204033020-1973836808.png) 因此在menu.c中判斷語句會打印出This is a wrong cmd! ![](https://img2020.cnblogs.com/blog/1880361/202003/1880361-20200318210217325-1766693865.png) 查看源代碼獲得的上圖,可知quit在鏈表的最後一個節點。 ![](https://img2020.cnblogs.com/blog/1880361/202003/1880361-20200318210506202-488352293.png) ![](https://img2020.cnblogs.com/blog/1880361/202003/1880361-20200318210608166-1796834197.png) 運行成功! #### 3、分析callback接口的運行機制,總結callback接口設計的方法 #### 3 關於回調函數的原理,我在這裏連接一篇知乎:https://www.zhihu.com/question/19801131 在這個程序中 ``` tDataNode* FindCmd(tLinkTable * head, char * cmd) { return (tDataNode*)SearchLinkTableNode(head,SearchCondition); } ``` 其中SearchLinkTableNode(head,SearchCondition)函數就是個回調函數,head是個結構體變量,而SearchCondition是個函數地址。