女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

介紹一種高效率的c語言狀態機

冬至配餃子 ? 來源:最后一個bug ? 作者:bug菌 ? 2022-08-12 09:07 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

/***高效率狀態機***/

狀態機對于有一定編程經驗的程序員一定會用到,因為對于我們的各種各樣的模塊他們都會有各種狀態,其他模塊都會根據這些狀態和數據進行處理;同時在網絡編程方面也會根據網絡狀態和消息類型進行相應處理等等方面狀態機的使用是非常廣泛的,我們通常稱這種狀態機為有限狀態機—FSM

在進行有限狀態機編寫之前,我們需要進行狀態的梳理,
最好是能畫UML圖或者是簡單的畫一些狀態圖,那么我們平時都是如何實現這個狀態機框架的呢?

1)用判斷語句進行狀態機的分支


if(statue == STATUE_1)sStatue1Process();

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

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

elsesStatue4Process();


上面通過if/else分支了4種狀態,分別每種狀態有各自的處理辦法process函數,那么狀態之間如何轉換呢?在我們的狀態處理函數里面,會
通過處理當前狀態的相關事務,然后通過相關條件改變statue,如statue=STATUE_2,從而下一次進入對應的狀態中!

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

2)用函數指針高效提高狀態機效率

參考代碼如下:

pYYBAGL1p5GABeHLAAFYvFCT2hU881.png

poYBAGL1p5iANUklAAEKVJLXQxg843.png

pYYBAGL1p56AbI1MAACoAODWsEc134.png

按照預期輸出了最終的結果,該辦法類似于用空間換了時間,把狀態和處理進行了直接綁定,這樣會使用掉一些內存,不過對于整個軟件代碼而言是不值一提的!

優化:我們可能對于狀態處理還需要傳入一些數據,我們可以優化函數指針讓其變成含參數的形式!等等優化版本大同小異!(哈哈,上面的代碼手機打得,風格寫得不好大家請見諒)


審核編輯:劉清


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

    關注

    180

    文章

    7632

    瀏覽量

    141630
  • 狀態機
    +關注

    關注

    2

    文章

    493

    瀏覽量

    28234
  • fsm
    fsm
    +關注

    關注

    0

    文章

    35

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    求助,關于srammaster.cydsn中狀態機的問題求解

    晚上好。 我目前正在學習 GPIF II。 查看..EZ-USB FX3 SDK1.3firmwaregpif_examplescyfxsrammastersrammaster.cydsn中的狀態機,有狀態START和START1。 這意味著什么?
    發表于 05-12 06:20

    MDD高效率整流管的工作原理:如何降低導通損耗?

    在高頻、高功率應用中,高效率整流管的導通損耗直接影響電路的整體能效和熱管理。MDD作為專業的二極管制造商,其高效率整流管因低正向壓降(VF)和快速恢復特性廣泛應用于開關電源(SMPS)、PFC電路
    的頭像 發表于 04-03 10:55 ?447次閱讀
    MDD<b class='flag-5'>高效率</b>整流管的工作原理:如何降低導通損耗?

    大功率直流電源如何提高效率

    大功率直流電源提高效率的方法主要包括以下幾個方面: 、優化電源拓撲結構 電源拓撲結構是影響電源效率的關鍵因素之。常見的直流電源拓撲結構有線性穩壓電源和開關穩壓電源兩
    的頭像 發表于 12-23 10:12 ?772次閱讀

    一種新型高效率的服務器電源系統

    一種新型高效率的服務器電源系統
    發表于 12-19 16:45 ?1次下載

    Simulink中的狀態機建模方法 Simulink數據可視化與分析功能

    。 1.2 使用狀態機圖(Stateflow) Stateflow是Simulink的個附加產品,專門用于設計和模擬狀態機
    的頭像 發表于 12-12 09:27 ?2985次閱讀

    深入理解C語言:循環語句的應用與優化技巧

    在程序設計中,我們常常需要重復執行某段代碼。為了提高效率和簡化代碼,循環語句應運而生。C語言作為門經典的編程
    的頭像 發表于 12-07 01:11 ?628次閱讀
    深入理解<b class='flag-5'>C</b><b class='flag-5'>語言</b>:循環語句的應用與優化技巧

    高效率整流二極管經典型號大全 選型不再迷茫

    在實際應用中,整流二極管種類很多,可分為普通整流二極管、高效率整流二極管、快恢復整流二極管、超快恢復整流二極管等等。常有客戶前來東沃電子咨詢:貴司生產高效率整流二極管嗎?高效率整流二極管常用型號有哪些?
    的頭像 發表于 11-13 17:18 ?1696次閱讀
    <b class='flag-5'>高效率</b>整流二極管經典型號大全 選型不再迷茫

    MCU編程語言和開發環境介紹

    MCU編程語言 MCU編程語言是用于編寫MCU程序的高級編程語言,它們使得開發者能夠更高效地開發嵌入式應用程序。以下是些常用的MCU編程
    的頭像 發表于 11-01 11:51 ?2188次閱讀

    高效率PA設計的雙重挑戰

    效率”在射頻功率放大器(PA)設計中占據舉足輕重的地位。高效率PA設計的兩大核心:PA的“Class”設計以及功率合成架構。然而,在實際的射頻前端系統中,PA并非孤立存在,而是與整個系統緊密相連。系統層面的設計方案對PA功耗有著深遠影響。
    的頭像 發表于 10-18 15:02 ?1194次閱讀
    <b class='flag-5'>高效率</b>PA設計的雙重挑戰

    如何高效率選出高能效的電感?

    高感量的電感來平滑紋波電流實現效率最高,即損耗最佳,需要確保在通過工作電流時,電感器不能磁芯飽和,也不能繞組過熱。本文介紹了如何評估電感器的損耗,以及高效率電感器的設計與快速選型方法。
    的頭像 發表于 09-20 12:43 ?715次閱讀
    如何<b class='flag-5'>高效率</b>選出高能效的電感?

    電機的能效等級及節能計算何為高效率電機?

    高效率電機出現在上世紀70年代第次能源危機時,它與般電動機相比其損耗下降約20%左右。由于能源供應的持續緊張,近年又出現了所謂超高效率電機,其損耗又比
    的頭像 發表于 09-05 09:13 ?1408次閱讀

    觸發器和狀態機的關系是什么

    觸發器和狀態機在數字電路設計中有著緊密的關系,它們共同構成了時序邏輯電路的基礎,用于實現數據的存儲、處理和傳輸。
    的頭像 發表于 08-12 11:24 ?940次閱讀

    高效率二極管如何識別判斷

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

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

    C類放大器是一種無線電頻率放大器,它在工作時,晶體管的導通時間小于個周期的半,因此被稱為C類放大器。
    的頭像 發表于 08-01 14:46 ?994次閱讀

    如何在FPGA中實現狀態機

    在FPGA(現場可編程門陣列)中實現狀態機一種常見的做法,用于控制復雜的數字系統行為。狀態機能夠根據當前的輸入和系統狀態,決定下步的動作
    的頭像 發表于 07-18 15:57 ?1224次閱讀