在文章最后提到之前的隱藏結(jié)構(gòu)體成員的方法是一種完全私有的封裝無(wú)法做到"公私分明",這樣通過(guò)函數(shù)調(diào)用在MCU中會(huì)存在較大的開(kāi)銷(xiāo)。
1、原理與技巧
那時(shí)候bug菌就在想有什么辦法可以做到私有成員與公共成員區(qū)別對(duì)待呢?
既然.h文件中的不完全類(lèi)型僅僅只是一個(gè)啥也不含的結(jié)構(gòu)體空殼,那么根據(jù)結(jié)構(gòu)體的內(nèi)存模型以及我們平時(shí)經(jīng)常提到的C語(yǔ)言面向?qū)ο笤O(shè)計(jì)中的繼承處理。
于是便編寫(xiě)了如下代碼來(lái)驗(yàn)證我的想法:
參考代碼:
輸出結(jié)果:
從輸出結(jié)果上來(lái)看編譯正常,且輸出了正確的結(jié)果,member1可被外界直接訪問(wèn),而member2只能通過(guò)App.c內(nèi)部直接訪問(wèn),或者通過(guò)定義外部函數(shù)接口進(jìn)行間接訪問(wèn),否則就會(huì)報(bào)錯(cuò)。一頓猛如虎的操作竟然驗(yàn)證了自己的一些想法。
2、優(yōu)化版本
后來(lái)又想了想,如果成員比較多,不是特別好管理,于是嘗試了一個(gè)更好的成員管理方式:
參考代碼:
輸出結(jié)果:
編譯OK,完工,是不是感覺(jué)有一股C++的味道了,如果你還沒(méi)有看懂的話(huà),記得多看幾遍,因?yàn)檫@種處理方式算是非常常見(jiàn)的~
審核編輯:劉清
-
mcu
+關(guān)注
關(guān)注
146文章
17312瀏覽量
352208 -
接口
+關(guān)注
關(guān)注
33文章
8687瀏覽量
151671 -
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7614瀏覽量
137409
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論