色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

有什么辦法可以做到私有結構體成員與公共結構體成員區別對待呢?

冬至配餃子 ? 來源:最后一個bug ? 作者:bug菌 ? 2022-08-11 14:42 ? 次閱讀

在文章最后提到之前的隱藏結構體成員的方法是一種完全私有的封裝無法做到"公私分明",這樣通過函數調用在MCU中會存在較大的開銷。

1、原理與技巧

那時候bug菌就在想有什么辦法可以做到私有成員與公共成員區別對待呢?

既然.h文件中的不完全類型僅僅只是一個啥也不含的結構體空殼,那么根據結構體的內存模型以及我們平時經常提到的C語言面向對象設計中的繼承處理。

于是便編寫了如下代碼來驗證我的想法:

參考代碼:

poYBAGL0o9aAbQLGAAD9hCfZ5sI916.pngpoYBAGL0o92AOVYBAAB0SK8WK5A993.pngpYYBAGL0o_WASNMLAACXtOsYS8w370.png

輸出結果:

poYBAGL0o_yAJFQoAABWl3kCgcw166.png

從輸出結果上來看編譯正常,且輸出了正確的結果,member1可被外界直接訪問,而member2只能通過App.c內部直接訪問,或者通過定義外部函數接口進行間接訪問,否則就會報錯。一頓猛如虎的操作竟然驗證了自己的一些想法。

2、優化版本

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

參考代碼:

pYYBAGL0pDCALpEpAAC8H4wIN5o435.pngpoYBAGL0pDWARE0QAAD8jASol1E098.pngpoYBAGL0pDyAW16gAACq0UJ90uU981.pngpYYBAGL0pEOAAkJZAAD-dlmim7M607.png

輸出結果:

pYYBAGL0pFyAT6D8AABXBO7RPHI405.png

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



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • mcu
    mcu
    +關注

    關注

    146

    文章

    17172

    瀏覽量

    351583
  • 接口
    +關注

    關注

    33

    文章

    8625

    瀏覽量

    151351
  • C語言
    +關注

    關注

    180

    文章

    7606

    瀏覽量

    137070
收藏 人收藏

    評論

    相關推薦

    結構成員的順序會影響結構的大小嗎

    相同的結構成員,如果把順序調整一下,會不會影響結構的大小? 答案是會的,這主要跟字節對齊有關。 比如這樣的
    的頭像 發表于 11-25 16:24 ?206次閱讀

    C語言和C++中結構區別

    同樣是結構,看看在C語言和C++中有什么區別
    的頭像 發表于 10-30 15:11 ?262次閱讀

    typedef和struct區別

    在C語言中, typedef 和 struct 是兩個非常重要的關鍵字,它們在定義數據結構時扮演著關鍵的角色。然而,它們之間一些明顯的區別。 1. struct 關鍵字 struct (結構
    的頭像 發表于 08-20 11:00 ?1249次閱讀

    ota升級的庫中,結構upgrade_server_info中pespconn的作用是什么?

    check_cb; struct espconn *pespconn; }; 這個結構中已經ip,port,pespconn這個結構
    發表于 07-12 06:33

    請問esp-idf&vscode結構索引不到對應的成員如何解決?

    兄弟們,我用VSCode 初始化結構時,索引不到對應的成員,并且索引會出現不屬于結構體內的東西,有解決辦法嗎,球球了
    發表于 06-14 06:42

    esp32調試MQTT的程序,如何對.host初始化?

    esp_mqtt_client_config_t mqtt_cfg這個結構的時候,你們例程里面只初始化url,但是我在網上看到很多地方的參考程序都是初始化這些結構
    發表于 06-11 07:55

    你是否真的了解結構占用了多少字節?

    結構成員所占內存空間大小一般情況下,如果想知道結構成員的內存占用情況需要:1、先用
    的頭像 發表于 06-04 08:04 ?501次閱讀
    你是否真的了解<b class='flag-5'>結構</b><b class='flag-5'>體</b>占用了多少字節?

    嵌入式中C語言結構基本實現

    : ? ??在struct 中聲明了一個含有若干新成員的數據類型。 ????tag ?是結構標簽。 ????member-list ?是標準的變量定義,比如 int i; 或者 float f,或者其他
    的頭像 發表于 05-11 08:49 ?1065次閱讀
    嵌入式中C語言<b class='flag-5'>結構</b><b class='flag-5'>體</b>基本實現

    定義了一個結構,但是分配的地址不連續,為什么?

    定義了一個結構,但是分配的地址不連續,是KEIL的問題還是我的問題?
    發表于 04-26 08:12

    用FreeRTOS使用隊列怎么發送一個結構

    怎么使用隊列,發送一個12個字節的結構? osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec
    發表于 04-17 07:35

    C語言結構史上最詳細的講解【軟件干貨】

    struct結構數據類型 前言 我們知道,在C語言中有一些基本的數據類型,如?char?int?float?long?double?string(c99) 等等數據類型,他們可以表示一些事物
    的頭像 發表于 03-28 17:52 ?789次閱讀

    求助,關于G031ADC結構設置的幾個疑問求解

    本人在使用ADC時想使用多通道模式,所以便在CUBEMX上將十九個通道全部打開(包括三個內部通道),生成代碼以后詳細看了一下結構的配置發現有幾個疑惑, 1.ADC通道分為規則通道和注入通道,那么
    發表于 03-15 07:03

    求助,請問一個結構如何全部定義到 __attribute__ 區域?

    請問一個結構如何全部定義到 __attribute__ 區域? 例如我這里涉及到一些高速計算的緩存,計劃將緩存數據存儲到 __attribute__ 區域。 三個結構 ,每個
    發表于 01-16 07:29

    經典 C 語言編程,結構和聯合體如何共用?

    可以 使用 sizeof 進行獲取,默認為字節對齊的大小。 聯合體 聯合體的參數共享同一個內存地址,所占的內存大小完全是由聯合體中參數類型決定字長,然后數據共享,內存共享等。 結構和聯合體連用例子: 1、首先定義一個
    的頭像 發表于 01-11 18:24 ?1412次閱讀
    經典 C 語言編程,<b class='flag-5'>結構</b><b class='flag-5'>體</b>和聯合體如何共用?

    結構與指針的關系

    在C語言中,結構(Struct)是一種用戶自定義的數據類型,它允許您將不同類型的數據項組合在一起,以便形成一個更復雜的數據結構結構
    的頭像 發表于 01-11 08:00 ?1012次閱讀
    <b class='flag-5'>結構</b><b class='flag-5'>體</b>與指針的關系
    主站蜘蛛池模板: 亚洲日本欧美产综合在线| 干极品美女| 久久九九免费| 337p欧洲亚大胆精品| 破苞流血哭泣 magnet| 俄罗斯人与动ZOZ0| 亚洲精品婷婷无码成人A片在线| 久久91精品久久久久久水蜜桃| 97碰成视频免费| 人妻插B视频一区二区三区| 国产免费看片| 2022年国产精品久久久久| 日韩性大片| 久久国产精品永久免费网站| z00兽200俄罗斯| 亚洲免费久久| 欧美美女一区二区三区| 国产偷国产偷亚州清高APP| 真实伦 乱| 试看2分钟AA片| 乱码午夜-极品国产内射| 国产成人精选免费视频| 中文视频在线观看| 特级毛片AAAAAA| 美女黄图大全| 国产呦精品一区二区三区网站| 999久久久国产| 亚洲1卡二卡3卡4卡新区在线| 免费亚洲视频| 国产亚洲一区二区三区啪| couo福利姬图库| 一级做a爰片久久毛片免费| 色欲天天天综合网免费| 领导边摸边吃奶边做爽在线观看| 国产精品久久久久久52AVAV| 99久久久久国产精品免费| 亚洲人精品午夜射精日韩| 色欲人妻AAAAAAA无码| 女性酥酥影院| 久久亚洲伊人| 国语自产精品一区在线视频观看 |