在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

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

介紹一種高效率的c語(yǔ)言狀態(tài)機(jī)

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

/***高效率狀態(tài)機(jī)***/

狀態(tài)機(jī)對(duì)于有一定編程經(jīng)驗(yàn)的程序員一定會(huì)用到,因?yàn)閷?duì)于我們的各種各樣的模塊他們都會(huì)有各種狀態(tài),其他模塊都會(huì)根據(jù)這些狀態(tài)和數(shù)據(jù)進(jìn)行處理;同時(shí)在網(wǎng)絡(luò)編程方面也會(huì)根據(jù)網(wǎng)絡(luò)狀態(tài)和消息類型進(jìn)行相應(yīng)處理等等方面狀態(tài)機(jī)的使用是非常廣泛的,我們通常稱這種狀態(tài)機(jī)為有限狀態(tài)機(jī)—FSM

在進(jìn)行有限狀態(tài)機(jī)編寫之前,我們需要進(jìn)行狀態(tài)的梳理,
最好是能畫UML圖或者是簡(jiǎn)單的畫一些狀態(tài)圖,那么我們平時(shí)都是如何實(shí)現(xiàn)這個(gè)狀態(tài)機(jī)框架的呢?

1)用判斷語(yǔ)句進(jìn)行狀態(tài)機(jī)的分支


if(statue == STATUE_1)sStatue1Process();

else if(statue == STATUE_2)sStatue2Process();

else if(statue == STATUE_3)sStatue3Process();

elsesStatue4Process();


上面通過if/else分支了4種狀態(tài),分別每種狀態(tài)有各自的處理辦法process函數(shù),那么狀態(tài)之間如何轉(zhuǎn)換呢?在我們的狀態(tài)處理函數(shù)里面,會(huì)
通過處理當(dāng)前狀態(tài)的相關(guān)事務(wù),然后通過相關(guān)條件改變statue,如statue=STATUE_2,從而下一次進(jìn)入對(duì)應(yīng)的狀態(tài)中!

那么上面我們是通過分支來(lái)進(jìn)行處理,同樣我們也可以使用switch來(lái)進(jìn)行處理!
至于選擇if/else還是switch,我們之前有個(gè)文章進(jìn)行分析,大家可以前往閱讀,這兩種分支語(yǔ)句對(duì)于不太多的狀態(tài)仍然是首選的,而對(duì)于我們的狀態(tài)較多,那么可能通過判斷會(huì)浪費(fèi)一些時(shí)間,為了提高效率,我們提出了第二種方法。

2)用函數(shù)指針高效提高狀態(tài)機(jī)效率

參考代碼如下:

pYYBAGL1p5GABeHLAAFYvFCT2hU881.png

poYBAGL1p5iANUklAAEKVJLXQxg843.png

pYYBAGL1p56AbI1MAACoAODWsEc134.png

按照預(yù)期輸出了最終的結(jié)果,該辦法類似于用空間換了時(shí)間,把狀態(tài)和處理進(jìn)行了直接綁定,這樣會(huì)使用掉一些內(nèi)存,不過對(duì)于整個(gè)軟件代碼而言是不值一提的!

優(yōu)化:我們可能對(duì)于狀態(tài)處理還需要傳入一些數(shù)據(jù),我們可以優(yōu)化函數(shù)指針讓其變成含參數(shù)的形式!等等優(yōu)化版本大同小異?。ü厦娴拇a手機(jī)打得,風(fēng)格寫得不好大家請(qǐng)見諒)


審核編輯:劉清


聲明:本文內(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)投訴
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7615

    瀏覽量

    137854
  • 狀態(tài)機(jī)
    +關(guān)注

    關(guān)注

    2

    文章

    492

    瀏覽量

    27678
  • fsm
    fsm
    +關(guān)注

    關(guān)注

    0

    文章

    35

    瀏覽量

    12847
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一種新型高效率的服務(wù)器電源系統(tǒng)

    一種新型高效率的服務(wù)器電源系統(tǒng)
    發(fā)表于 12-19 16:45 ?1次下載

    Simulink中的狀態(tài)機(jī)建模方法 Simulink數(shù)據(jù)可視化與分析功能

    。 1.2 使用狀態(tài)機(jī)圖(Stateflow) Stateflow是Simulink的個(gè)附加產(chǎn)品,專門用于設(shè)計(jì)和模擬狀態(tài)機(jī)
    的頭像 發(fā)表于 12-12 09:27 ?918次閱讀

    深入理解C語(yǔ)言:循環(huán)語(yǔ)句的應(yīng)用與優(yōu)化技巧

    在程序設(shè)計(jì)中,我們常常需要重復(fù)執(zhí)行某段代碼。為了提高效率和簡(jiǎn)化代碼,循環(huán)語(yǔ)句應(yīng)運(yùn)而生。C語(yǔ)言作為門經(jīng)典的編程
    的頭像 發(fā)表于 12-07 01:11 ?261次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語(yǔ)言</b>:循環(huán)語(yǔ)句的應(yīng)用與優(yōu)化技巧

    觸發(fā)器和狀態(tài)機(jī)的關(guān)系是什么

    觸發(fā)器和狀態(tài)機(jī)在數(shù)字電路設(shè)計(jì)中有著緊密的關(guān)系,它們共同構(gòu)成了時(shí)序邏輯電路的基礎(chǔ),用于實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、處理和傳輸。
    的頭像 發(fā)表于 08-12 11:24 ?553次閱讀

    高效率二極管如何識(shí)別判斷

    高效率二極管在在電源管理和電能轉(zhuǎn)換領(lǐng)域,主要特點(diǎn)是具有低正向壓降和快速的開關(guān)速度,從而提高電路的整體效率高效率二極管的基本特性高效率
    的頭像 發(fā)表于 08-12 09:51 ?566次閱讀
    <b class='flag-5'>高效率</b>二極管如何識(shí)別判斷

    c類放大器最高效率是什么

    C類放大器是一種無(wú)線電頻率放大器,它在工作時(shí),晶體管的導(dǎo)通時(shí)間小于個(gè)周期的半,因此被稱為C類放大器。
    的頭像 發(fā)表于 08-01 14:46 ?610次閱讀

    如何在FPGA中實(shí)現(xiàn)狀態(tài)機(jī)

    在FPGA(現(xiàn)場(chǎng)可編程門陣列)中實(shí)現(xiàn)狀態(tài)機(jī)一種常見的做法,用于控制復(fù)雜的數(shù)字系統(tǒng)行為。狀態(tài)機(jī)能夠根據(jù)當(dāng)前的輸入和系統(tǒng)狀態(tài),決定下步的動(dòng)作
    的頭像 發(fā)表于 07-18 15:57 ?743次閱讀

    電源設(shè)計(jì):同步整流帶來(lái)的不僅僅是高效率

    ,增益急劇下降,原因是極點(diǎn)導(dǎo)致更低的交叉頻率,從而降低了瞬態(tài)響應(yīng)??傊?,同步整流可提高效率,同時(shí)也能夠極大地幫助瞬態(tài)負(fù)載調(diào)節(jié)。它為電源預(yù)加載提供了一種高效的方法。另外,相比擺動(dòng)電感,它還擁有更加穩(wěn)定的控制環(huán)路特性。它提高了傳統(tǒng)降
    發(fā)表于 07-11 11:17

    玩轉(zhuǎn)Spring狀態(tài)機(jī)

    說(shuō)起Spring狀態(tài)機(jī),大家很容易聯(lián)想到這個(gè)狀態(tài)機(jī)和設(shè)計(jì)模式中狀態(tài)模式的區(qū)別是啥呢?沒錯(cuò),Spring狀態(tài)機(jī)就是狀態(tài)模式的
    的頭像 發(fā)表于 06-25 14:21 ?1041次閱讀
    玩轉(zhuǎn)Spring<b class='flag-5'>狀態(tài)機(jī)</b>

    關(guān)于SMU狀態(tài)機(jī)的問題求解

    我有些關(guān)于 SMU 狀態(tài)機(jī)的問題。 假設(shè)由于某種原因,SMU 已進(jìn)入故障狀態(tài)。 手冊(cè)指出,要返回運(yùn)行狀態(tài)并將 FSP 恢復(fù)到無(wú)故障狀態(tài),應(yīng)
    發(fā)表于 05-29 08:18

    在Verilog中實(shí)現(xiàn)Moore型和Mealy型狀態(tài)機(jī)的方法簡(jiǎn)析

    編寫能夠被綜合工具識(shí)別的狀態(tài)機(jī),首先需要理解狀態(tài)機(jī)的基本概念和分類。狀態(tài)機(jī)(FSM)是表示有限個(gè)狀態(tài)以及在這些狀態(tài)之間轉(zhuǎn)換的邏輯結(jié)構(gòu)。
    的頭像 發(fā)表于 05-01 11:38 ?1818次閱讀

    嵌入式編程,如何用 C 語(yǔ)言實(shí)現(xiàn)狀態(tài)機(jī)設(shè)計(jì)?

    狀態(tài)機(jī)模式是一種行為模式,通過多態(tài)實(shí)現(xiàn)不同狀態(tài)的調(diào)轉(zhuǎn)行為的確是一種很好的方法,只可惜在嵌入式環(huán)境下,有時(shí)只能寫純C代碼,并且還需要考慮代碼的
    發(fā)表于 04-23 11:00

    如何采用“狀態(tài)機(jī)”解析UART數(shù)據(jù)幀

    如果個(gè)系統(tǒng)接收上述“不定長(zhǎng)度”的協(xié)議幀,將會(huì)有個(gè)挑戰(zhàn)--如何高效接收與解析。 為簡(jiǎn)化系統(tǒng)設(shè)計(jì),我們強(qiáng)烈建議您采用“狀態(tài)機(jī)”來(lái)解析UART數(shù)據(jù)幀。
    的頭像 發(fā)表于 03-25 14:29 ?809次閱讀
    如何采用“<b class='flag-5'>狀態(tài)機(jī)</b>”解析UART數(shù)據(jù)幀

    高效率的DC電源模塊設(shè)計(jì)技巧

    BOSHIDA ?提高效率的DC電源模塊設(shè)計(jì)技巧 設(shè)計(jì)高效率的BOSHIDA ?DC電源模塊可以幫助減少能源浪費(fèi)和提高系統(tǒng)功耗,以下是些設(shè)計(jì)技巧: 1. 選擇高效率的功率轉(zhuǎn)換器:選擇
    的頭像 發(fā)表于 02-26 14:27 ?638次閱讀
    提<b class='flag-5'>高效率</b>的DC電源模塊設(shè)計(jì)技巧

    什么是有限狀態(tài)機(jī)?如何解決傳統(tǒng)有限狀態(tài)機(jī)狀態(tài)爆炸」問題?

    有限狀態(tài)機(jī)(Finite State Machine,簡(jiǎn)稱FSM)是一種用來(lái)進(jìn)行對(duì)象行為建模的工具,其作用主要是描述對(duì)象在它的生命周期內(nèi)所經(jīng)歷的狀態(tài)序列以及如何響應(yīng)來(lái)自外界的各種事件。
    的頭像 發(fā)表于 02-17 16:09 ?6380次閱讀
    什么是有限<b class='flag-5'>狀態(tài)機(jī)</b>?如何解決傳統(tǒng)有限<b class='flag-5'>狀態(tài)機(jī)</b>「<b class='flag-5'>狀態(tài)</b>爆炸」問題?
    主站蜘蛛池模板: 未满十八18周岁禁止免费国产 | 亚洲你懂的 | 亚洲国产精品久久久久婷婷老年 | 久久久久久全国免费观看 | 如果我们是季节韩剧在线观看 | 四虎国产永久免费久久 | 在线女同免费观看网站 | 欧美a网站 | 综合se| 国产三级a三级三级野外 | 自拍偷拍综合网 | 日本欧美一区二区 | 综合五月婷婷 | 黄色大全片 | 欧美日韩在线成人免费 | 久久精品乱子伦观看 | 又黄又粗暴的120秒免费gif视频 | 四虎884| 午夜小视频男女在线观看 | 午夜视频在线免费看 | 亚欧有色亚欧乱色视频 | 日日干夜夜操 | 国产成人夜间影院在线观看 | a资源在线 | 热久久最新视频 | 久久久国产高清 | 欧美黑人巨大日本人又爽又色 | 日本jlzz| 久久久久久久久国产 | 色色色色色色色色色色色色色色 | 午夜毛片视频高清不卡免费 | 天天综合五月天 | 亚洲精品综合网在线8050影院 | 好爽毛片一区二区三区四 | 在线播放真实国产乱子伦 | 日本黄色高清视频网站 | 亚洲成人看片 | 成年人一级片 | 国产小视频在线播放 | 天天爽夜夜爽夜夜爽 | 四虎在线观看 |