如何封裝
1.在標頭檔案中宣告外部需要看到的資料結構,而具體的實現放在.c檔案中具體實現。
比如在標頭檔案中:
enum _dlistret
dlistret;
struct _dlist;
typedef
struct _dlist dlist;
2.在標頭檔案中提供操作該資料結構的介面宣告。
3.將外部不需要的函式、而.c檔案需要使用的函式的宣告和定義都放在.c檔案中,並且加上static
4.禁止使用全域性變數(除了單例模式)
5.資料結構中的資料部分要考慮到通用性
此處採用了void*型別
6.運算元據結構的介面要考慮通用性
介面的具體功能是由外部需求決定的,而不是隨意想象的,具體開發中可以按照測試驅動的方式來編寫**,可以提高效率。
7.讓c++可以直接呼叫的方法
在.h檔案中如下
extern
"c"#endif
8.採用函式指標擁抱變化
比如列印void*資料,提供函式指標,具體如何列印由客戶端提供。
《系統程式設計師成長計畫》學習交流 2 通用單鏈表
更新說明 2012 08 17 修改makefile 2012 04 22 更新了slist.c中的slist delete函式實現。描述 仿照 系統程式設計師成長計畫 通用雙鏈表,寫的乙個通用單鏈表。如有錯誤,歡迎指正。清單 slist.h ifndef slist h define slist ...
系統程式設計師成長計畫005
1.這個變成大寫的函式,就不需要用函式指標來給foreach做引數了。因為他沒有什麼其他變種,不像print那樣,既要print int又要print str。函式指標,或者說 函式,別瞎用!2.書裡的寫法 dlist foreach dlist,str toupper,null 看來還是堅持了 函...
系統程式設計師成長計畫 併發 五
文章出處 作者 李先靜 無鎖 lock free 資料結構 多執行緒併發執行時,雖然有共享資料,如果所有執行緒只是讀取共享資料而不修改它,也是不用加鎖的,比如 段就是共享的 資料 每個執行緒都會讀取,但是不用加鎖。排除所有這些情況,多執行緒之間有共享資料,有的執行緒要修改這些共享資料,有的執行緒要讀...