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

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

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

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

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

冬至配餃子 ? 來(lái)源:最后一個(gè)bug ? 作者:bug菌 ? 2022-08-11 14:42 ? 次閱讀

在文章最后提到之前的隱藏結(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)證我的想法:

參考代碼:

poYBAGL0o9aAbQLGAAD9hCfZ5sI916.pngpoYBAGL0o92AOVYBAAB0SK8WK5A993.pngpYYBAGL0o_WASNMLAACXtOsYS8w370.png

輸出結(jié)果:

poYBAGL0o_yAJFQoAABWl3kCgcw166.png

從輸出結(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è)更好的成員管理方式:

參考代碼:

pYYBAGL0pDCALpEpAAC8H4wIN5o435.pngpoYBAGL0pDWARE0QAAD8jASol1E098.pngpoYBAGL0pDyAW16gAACq0UJ90uU981.pngpYYBAGL0pEOAAkJZAAD-dlmim7M607.png

輸出結(jié)果:

pYYBAGL0pFyAT6D8AABXBO7RPHI405.png

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



審核編輯:劉清

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

    關(guān)注

    146

    文章

    17312

    瀏覽量

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

    關(guān)注

    33

    文章

    8687

    瀏覽量

    151671
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7614

    瀏覽量

    137409
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    結(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 ?253次閱讀

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

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

    typedef和struct區(qū)別

    在C語(yǔ)言中, 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 ?1319次閱讀

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

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

    ota升級(jí)的庫(kù)中,結(jié)構(gòu)upgrade_server_info中pespconn的作用是什么?

    check_cb; struct espconn *pespconn; }; 這個(gè)結(jié)構(gòu)中已經(jīng)ip,port,pespconn這個(gè)結(jié)構(gòu)
    發(fā)表于 07-12 06:33

    聚徽觸控-工控一機(jī)和 PLC 一機(jī)什么不同

    在工業(yè)自動(dòng)化領(lǐng)域,工控一機(jī)和 PLC 一機(jī)都扮演著重要角色。盡管它們?cè)谀撤N程度上有所重疊,但它們?cè)诠δ堋?yīng)用和設(shè)計(jì)結(jié)構(gòu)等方面存在顯著的不同。工控一機(jī)和 PLC 一
    的頭像 發(fā)表于 06-21 10:05 ?546次閱讀

    ESP32-C3如何把一個(gè)const結(jié)構(gòu)固定放在生成的bin文件的最末尾?

    我的芯片是ESP32-C3,需要把一個(gè)const結(jié)構(gòu)固定放在生成的bin文件的最末尾,例如: #define USER_SECTION__attribute__ ((used,section
    發(fā)表于 06-18 07:52

    請(qǐng)問(wèn)esp-idf&amp;vscode結(jié)構(gòu)索引不到對(duì)應(yīng)的成員如何解決?

    兄弟們,我用VSCode 初始化結(jié)構(gòu)時(shí),索引不到對(duì)應(yīng)的成員,并且索引會(huì)出現(xiàn)不屬于結(jié)構(gòu)體內(nèi)的東西,有解決辦法嗎,球球了
    發(fā)表于 06-14 06:42

    esp32調(diào)試MQTT的程序,如何對(duì).host初始化?

    esp_mqtt_client_config_t mqtt_cfg這個(gè)結(jié)構(gòu)的時(shí)候,你們例程里面只初始化url,但是我在網(wǎng)上看到很多地方的參考程序都是初始化這些結(jié)構(gòu)
    發(fā)表于 06-11 07:55

    你是否真的了解結(jié)構(gòu)占用了多少字節(jié)?

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

    嵌入式中C語(yǔ)言結(jié)構(gòu)基本實(shí)現(xiàn)

    : ? ??在struct 中聲明了一個(gè)含有若干新成員的數(shù)據(jù)類(lèi)型。 ????tag ?是結(jié)構(gòu)標(biāo)簽。 ????member-list ?是標(biāo)準(zhǔn)的變量定義,比如 int i; 或者 float f,或者其他
    的頭像 發(fā)表于 05-11 08:49 ?1108次閱讀
    嵌入式中C語(yǔ)言<b class='flag-5'>結(jié)構(gòu)</b><b class='flag-5'>體</b>基本實(shí)現(xiàn)

    定義了一個(gè)結(jié)構(gòu),但是分配的地址不連續(xù),為什么?

    定義了一個(gè)結(jié)構(gòu),但是分配的地址不連續(xù),是KEIL的問(wèn)題還是我的問(wèn)題?
    發(fā)表于 04-26 08:12

    用FreeRTOS使用隊(duì)列怎么發(fā)送一個(gè)結(jié)構(gòu)

    怎么使用隊(duì)列,發(fā)送一個(gè)12個(gè)字節(jié)的結(jié)構(gòu)? osEvent osMessageGet (osMessageQId queue_id, uint32_t millisec
    發(fā)表于 04-17 07:35

    C語(yǔ)言結(jié)構(gòu)史上最詳細(xì)的講解【軟件干貨】

    struct結(jié)構(gòu)數(shù)據(jù)類(lèi)型 前言 我們知道,在C語(yǔ)言中有一些基本的數(shù)據(jù)類(lèi)型,如?char?int?float?long?double?string(c99) 等等數(shù)據(jù)類(lèi)型,他們可以表示一些事物
    的頭像 發(fā)表于 03-28 17:52 ?828次閱讀

    求助,關(guān)于G031ADC結(jié)構(gòu)設(shè)置的幾個(gè)疑問(wèn)求解

    本人在使用ADC時(shí)想使用多通道模式,所以便在CUBEMX上將十九個(gè)通道全部打開(kāi)(包括三個(gè)內(nèi)部通道),生成代碼以后詳細(xì)看了一下結(jié)構(gòu)的配置發(fā)現(xiàn)有幾個(gè)疑惑, 1.ADC通道分為規(guī)則通道和注入通道,那么
    發(fā)表于 03-15 07:03
    主站蜘蛛池模板: 亚洲精品久久久久久偷窥| 国产在线精品亚洲观看不卡欧美| 99久久99久久久精品齐齐鬼色| 纯肉高H种马艳遇风流多| 免费视频精品38| 乌克兰18性hd| 91热久久免费精品99| 国产综合视频在线观看一区| 全球真实小U女视频合集| 亚洲午夜精品A片久久软件| 帝王被大臣们调教高肉| 久久综久久美利坚合众国 | 99久久精品国内| 国内偷拍夫妻av| 十大禁止安装的黄台有风险| 99婷婷久久精品国产一区二区| 久久成人亚洲| 亚洲 欧美 制服 视频二区| 国产99久久亚洲综合精品西瓜tv | 国产又黄又粗又爽又色的视频软件 | 精品国产乱码久久久久久夜深人妻| 日本一二三区视频在线| 131美女爱做视频午夜剧场| 精品国产国产精2020久久日| 性女传奇快播| 亚洲人成电影网站| 国产成人在线观看免费网站| 日本zljzljzlj精品| proburn中文破解版下载| 妹妹成人网| 99er热精品视频国产免费| 久久亚洲国产中文字幕| 一一本之道高清视频在线观看中文字幕 | 兔费看少妇性L交大片免费| 国产成人在线观看网站| 双性人皇上被c到哭| 国产99久久九九免费精品无码| 日韩亚洲国产中文字幕欧美| 超碰98人人插| 三级全黄的视频在线观看| 丰满人妻熟女色情A片|