在文章最后提到之前的隱藏結構體成員的方法是一種完全私有的封裝無法做到"公私分明",這樣通過函數調用在MCU中會存在較大的開銷。
1、原理與技巧
那時候bug菌就在想有什么辦法可以做到私有成員與公共成員區別對待呢?
既然.h文件中的不完全類型僅僅只是一個啥也不含的結構體空殼,那么根據結構體的內存模型以及我們平時經常提到的C語言面向對象設計中的繼承處理。
于是便編寫了如下代碼來驗證我的想法:
參考代碼:
輸出結果:
從輸出結果上來看編譯正常,且輸出了正確的結果,member1可被外界直接訪問,而member2只能通過App.c內部直接訪問,或者通過定義外部函數接口進行間接訪問,否則就會報錯。一頓猛如虎的操作竟然驗證了自己的一些想法。
2、優化版本
后來又想了想,如果成員比較多,不是特別好管理,于是嘗試了一個更好的成員管理方式:
參考代碼:
輸出結果:
編譯OK,完工,是不是感覺有一股C++的味道了,如果你還沒有看懂的話,記得多看幾遍,因為這種處理方式算是非常常見的~
審核編輯:劉清
-
mcu
+關注
關注
146文章
17172瀏覽量
351583 -
接口
+關注
關注
33文章
8625瀏覽量
151351 -
C語言
+關注
關注
180文章
7606瀏覽量
137070
發布評論請先 登錄
相關推薦
評論