99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

有什么辦法可以做到私有結(jié)構(gòu)體成員與公共結(jié)構(gòu)體成員區(qū)別對(duì)待呢?

冬至配餃子 ? 來源:最后一個(gè)bug ? 作者:bug菌 ? 2022-08-11 14:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在文章最后提到之前的隱藏結(jié)構(gòu)體成員的方法是一種完全私有的封裝無法做到"公私分明",這樣通過函數(shù)調(diào)用在MCU中會(huì)存在較大的開銷。

1、原理與技巧

那時(shí)候bug菌就在想有什么辦法可以做到私有成員與公共成員區(qū)別對(duì)待呢?

既然.h文件中的不完全類型僅僅只是一個(gè)啥也不含的結(jié)構(gòu)體空殼,那么根據(jù)結(jié)構(gòu)體的內(nèi)存模型以及我們平時(shí)經(jīng)常提到的C語言面向?qū)ο笤O(shè)計(jì)中的繼承處理。

于是便編寫了如下代碼來驗(yàn)證我的想法:

參考代碼:

poYBAGL0o9aAbQLGAAD9hCfZ5sI916.pngpoYBAGL0o92AOVYBAAB0SK8WK5A993.pngpYYBAGL0o_WASNMLAACXtOsYS8w370.png

輸出結(jié)果:

poYBAGL0o_yAJFQoAABWl3kCgcw166.png

從輸出結(jié)果上來看編譯正常,且輸出了正確的結(jié)果,member1可被外界直接訪問,而member2只能通過App.c內(nèi)部直接訪問,或者通過定義外部函數(shù)接口進(jìn)行間接訪問,否則就會(huì)報(bào)錯(cuò)。一頓猛如虎的操作竟然驗(yàn)證了自己的一些想法。

2、優(yōu)化版本

后來又想了想,如果成員比較多,不是特別好管理,于是嘗試了一個(gè)更好的成員管理方式:

參考代碼:

pYYBAGL0pDCALpEpAAC8H4wIN5o435.pngpoYBAGL0pDWARE0QAAD8jASol1E098.pngpoYBAGL0pDyAW16gAACq0UJ90uU981.pngpYYBAGL0pEOAAkJZAAD-dlmim7M607.png

輸出結(jié)果:

pYYBAGL0pFyAT6D8AABXBO7RPHI405.png

編譯OK,完工,是不是感覺有一股C++的味道了,如果你還沒有看懂的話,記得多看幾遍,因?yàn)檫@種處理方式算是非常常見的~



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17971

    瀏覽量

    366601
  • 接口
    +關(guān)注

    關(guān)注

    33

    文章

    8998

    瀏覽量

    153707
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141642
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    滲壓計(jì)在混凝土結(jié)構(gòu)中的安裝指南

    用于測(cè)量土體中的孔隙水壓力、巖和混凝土內(nèi)的滲透水壓力。在混凝土結(jié)構(gòu)中埋設(shè)滲壓計(jì),可以實(shí)時(shí)監(jiān)測(cè)結(jié)構(gòu)內(nèi)部的水壓力變化,為工程安全評(píng)估和維護(hù)提
    的頭像 發(fā)表于 05-28 10:55 ?155次閱讀
    滲壓計(jì)在混凝土<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>中的安裝指南

    GLAD應(yīng)用:全息光柵模擬

    用于模擬全息記錄介質(zhì)中形成的梯度折射率分布。全息結(jié)構(gòu)一旦形成,就可以在傳輸過程中將一束入射光波逐漸轉(zhuǎn)換成形成體全息結(jié)構(gòu)的另一束光波。兩束光波之間的能量傳遞轉(zhuǎn)換效率與
    發(fā)表于 05-15 09:32

    程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)

    《程序設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)》重點(diǎn)闡述了三大方向內(nèi)容: 1. C語言學(xué)習(xí)中的痛點(diǎn):針對(duì)當(dāng)前工程師在C語言學(xué)習(xí)中的痛點(diǎn),如指針函數(shù)與函數(shù)指針,如何靈活應(yīng)用結(jié)構(gòu)等。從變量的三要素(變量的類型,變量的值和變量
    發(fā)表于 05-13 16:45

    C語言中結(jié)構(gòu)與聯(lián)合體的深度解析:內(nèi)存布局與應(yīng)用場(chǎng)景

    一、基礎(chǔ)概念與核心差異 1.1 結(jié)構(gòu)(Struct)的本質(zhì) **結(jié)構(gòu)是C語言中實(shí)現(xiàn)數(shù)據(jù)封裝的基石,其核心特征在于內(nèi)存獨(dú)立性。每個(gè)成員變量
    發(fā)表于 04-08 09:18

    DLPC3439和DLPC3479具哪些差異?搭配DLP芯片怎么配對(duì)?

    請(qǐng)問:DLPC3439和DLPC3479具哪些差異?搭配DLP芯片怎么配對(duì)?
    發(fā)表于 02-21 07:40

    私有云和公有云什么區(qū)別

    私有云和公有云在多個(gè)方面存在顯著的區(qū)別,以下是具體的比較,主機(jī)推薦小編為您整理發(fā)布私有云和公有云什么區(qū)別。
    的頭像 發(fā)表于 02-20 10:38 ?728次閱讀

    RC水泥型防震基座與鋼結(jié)構(gòu)防震基座哪些區(qū)別

    C水泥型防震基座與鋼結(jié)構(gòu)防震基座以下區(qū)別
    的頭像 發(fā)表于 01-08 15:10 ?367次閱讀
    RC水泥型防震基座與鋼<b class='flag-5'>結(jié)構(gòu)</b>防震基座<b class='flag-5'>有</b>哪些<b class='flag-5'>區(qū)別</b>?

    結(jié)構(gòu)成員的順序會(huì)影響結(jié)構(gòu)的大小嗎

    相同的結(jié)構(gòu)成員,如果把順序調(diào)整一下,會(huì)不會(huì)影響結(jié)構(gòu)的大?。?答案是會(huì)的,這主要跟字節(jié)對(duì)齊有關(guān)。 比如這樣的
    的頭像 發(fā)表于 11-25 16:24 ?560次閱讀

    C語言和C++中結(jié)構(gòu)區(qū)別

    同樣是結(jié)構(gòu),看看在C語言和C++中有什么區(qū)別
    的頭像 發(fā)表于 10-30 15:11 ?765次閱讀

    公有IP與私有IP之間的區(qū)別

    今天我們來分享私有IP地址和公有IP地址的什么區(qū)別?主要從接入方式、特點(diǎn)以及各自的優(yōu)勢(shì)來說明。
    的頭像 發(fā)表于 09-21 10:49 ?1084次閱讀

    typedef和struct區(qū)別

    在C語言中, typedef 和 struct 是兩個(gè)非常重要的關(guān)鍵字,它們?cè)诙x數(shù)據(jù)結(jié)構(gòu)時(shí)扮演著關(guān)鍵的角色。然而,它們之間一些明顯的區(qū)別。 1. struct 關(guān)鍵字 struct (結(jié)構(gòu)
    的頭像 發(fā)表于 08-20 11:00 ?2509次閱讀

    typedef struct和直接struct的區(qū)別

    在C語言中, typedef 和 struct 是兩種不同的關(guān)鍵字,它們?cè)诙x和使用上有著明顯的區(qū)別。 typedef struct 和直接 struct 在 C 語言中用于定義結(jié)構(gòu)類型,但它們?cè)?/div>
    的頭像 發(fā)表于 08-20 10:58 ?3626次閱讀

    IGBT器件的基本結(jié)構(gòu)和作用

    場(chǎng)效應(yīng)晶體管(MOSFET)的特點(diǎn),具備高電壓、大電流和高速開關(guān)等優(yōu)良性能。IGBT的基本結(jié)構(gòu)可以分為表面柵極結(jié)構(gòu)Si結(jié)構(gòu)兩部分,以下是
    的頭像 發(fā)表于 08-08 09:46 ?1495次閱讀

    帶你認(rèn)識(shí)貼片一成型電感的材料結(jié)構(gòu)

    貼片一成型電感(也被稱為模壓電感)是一種具有特殊結(jié)構(gòu)和材料組成的電子元件。其材料結(jié)構(gòu)主要包括以下幾個(gè)方面: 一、主要材料 1. 金屬粉末 核心材料:一成型電感的主要材料是金屬粉末,
    的頭像 發(fā)表于 08-07 16:01 ?1072次閱讀
    帶你認(rèn)識(shí)貼片一<b class='flag-5'>體</b>成型電感的材料<b class='flag-5'>結(jié)構(gòu)</b>

    聚徽觸控-工控一機(jī)有無風(fēng)扇區(qū)別

    工控一機(jī),即工業(yè)控制計(jì)算機(jī),在有無風(fēng)扇方面存在明顯的區(qū)別。以下是關(guān)于工控一機(jī)有無風(fēng)扇的區(qū)別的詳細(xì)解釋:
    的頭像 發(fā)表于 07-30 09:23 ?548次閱讀