日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

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

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

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

1)用判斷語句進行狀態(tài)機的分支


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)之間如何轉換呢?在我們的狀態(tài)處理函數(shù)里面,會
通過處理當前狀態(tài)的相關事務,然后通過相關條件改變statue,如statue=STATUE_2,從而下一次進入對應的狀態(tài)中!

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

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

參考代碼如下:

pYYBAGL1p5GABeHLAAFYvFCT2hU881.png

poYBAGL1p5iANUklAAEKVJLXQxg843.png

pYYBAGL1p56AbI1MAACoAODWsEc134.png

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

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


審核編輯:劉清


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

    關注

    183

    文章

    7646

    瀏覽量

    146202
  • 狀態(tài)機
    +關注

    關注

    2

    文章

    501

    瀏覽量

    29352
  • fsm
    fsm
    +關注

    關注

    0

    文章

    36

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    UV三防漆適合哪些產(chǎn)品?高效率涂覆方案解析

    UV三防漆是一種快速固化的PCB保形涂層,廣泛適用于消費電子、汽車電子、工業(yè)控制及新能源產(chǎn)品。本文詳細解析UV三防漆適合哪些產(chǎn)品,以及高效率選擇性涂覆方案,幫助電子制造企業(yè)提升產(chǎn)品可靠性和生產(chǎn)效率。
    的頭像 發(fā)表于 04-01 00:40 ?218次閱讀
    UV三防漆適合哪些產(chǎn)品?<b class='flag-5'>高效率</b>涂覆方案解析

    資產(chǎn)管理怎么提高效率

    資產(chǎn)管理怎么提高效率資產(chǎn)管理效率提升需從流程自動化、數(shù)據(jù)可視化、資源優(yōu)化三方面入手,通過智能工具替代人工操作。廣州杰眾智能科技有限公司的RFID技術方案,可使資產(chǎn)盤點效率提升90%,閑置資產(chǎn)利用率
    的頭像 發(fā)表于 01-28 16:49 ?618次閱讀
    資產(chǎn)管理怎么提<b class='flag-5'>高效率</b>

    這幾個單片技巧如果不了解,真的很難再進階

    的嵌入式系統(tǒng)C編譯器代碼長度和執(zhí)行時間僅比以匯編語言編寫的同樣功能程度長 5-20%。雖然C語言是最普遍的一種高級
    發(fā)表于 01-05 07:22

    睿遠研究院丨IO-Link規(guī)范解讀(十一):ISDU狀態(tài)機與EVENT事件

    上篇我們介紹了ISDU的典型編碼格式和應用案例,本篇我們就來詳細介紹下,ISDU的狀態(tài)機,并把EVENT事件的邏輯,給大家好好解析下。 1主站ISDU狀態(tài)機 如上圖所示,ISDU的
    的頭像 發(fā)表于 11-29 18:28 ?4919次閱讀
    睿遠研究院丨IO-Link規(guī)范解讀(十一):ISDU<b class='flag-5'>狀態(tài)機</b>與EVENT事件

    為什么單片還在用C語言編程?

    最適合單片開發(fā)的編程語言實在太過晦澀難懂,學習起來非常的不方便,并且每一種單片的匯編指令有很大區(qū)別,所以想把個程序從這種單片
    發(fā)表于 11-28 07:37

    什么是狀態(tài)機?

    時刻所存在的穩(wěn)定的工作情況,系統(tǒng)在整個工作周期中可能有多個狀態(tài)。例如部電動機共有正轉、反轉、停轉這 3 狀態(tài)。
    發(fā)表于 11-27 08:15

    嵌入式開發(fā)為何經(jīng)常用到狀態(tài)機架構

    相悖。 狀態(tài)機就能解決邏輯完備性的問題。 狀態(tài)機一種以系統(tǒng)狀態(tài)為中心,以事件為變量的設計方法,它專注于各個狀態(tài)的特點以及
    發(fā)表于 11-25 07:08

    C語言和單片C語言有什么差異

    的目標代碼短、運行速度高、存儲空間小、符合C語言的ANSI標準,生成的代碼遵循Intel目標文件格式,而且可與A51匯編語言PL/M51語言目標代碼混合使用。 4、
    發(fā)表于 11-14 07:55

    睿遠研究院丨IO-Link規(guī)范解讀(六):主從站狀態(tài)機解析

    前言 書接上文,今天我們就來好好聊聊主從站的DL-Mode狀態(tài)機,還請各位童鞋前排坐好! 1主站狀態(tài)機解析 主站的DL-Mode狀態(tài)機有5個大狀態(tài),也是我們很熟悉的 建立通信、開始、預
    的頭像 發(fā)表于 10-28 17:34 ?6388次閱讀
    睿遠研究院丨IO-Link規(guī)范解讀(六):主從站<b class='flag-5'>狀態(tài)機</b>解析

    在多相降壓轉換器中使用耦合電感器可提高效率

    在不影響性能或增加物理空間的情況下提高效率。 一種很有前景的方法是使用耦合電感器 (CL)。通過使用相間互感技術,CL 可出色的消除電流紋波,從而在保持兼容傳統(tǒng)布局的同時顯著提高效率。 本文將簡要概述多相降壓轉換器設計人員在
    的頭像 發(fā)表于 10-02 16:57 ?2218次閱讀
    在多相降壓轉換器中使用耦合電感器可提<b class='flag-5'>高效率</b>

    HER304高效率整流二極管規(guī)格書

    HER304高效率整流二極規(guī)格書
    發(fā)表于 09-19 17:32 ?0次下載

    AP8105:采用先進PFM控制架構的高效率、低紋波DC-DC升壓轉換器

    致 AP8105通過創(chuàng)新的PFM控制架構和精密的模擬設計,為低輸入電壓應用提供了高效率、低噪聲的功率解決方案。其卓越的電氣特性、靈活的設計選項和極簡的外部元件需求,使其成為電池供電設備的理想選擇。無論是消費電子產(chǎn)品還是工業(yè)應用,AP8105都能提供可靠、
    發(fā)表于 08-22 10:17

    高效率、6通道、白光LED驅動器,帶I2C接口 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()高效率、6通道、白光LED驅動器,帶I2C接口相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有高效率、6通道、白光LED驅動器,帶I2C接口的引腳圖、接線圖、封裝手冊、中文資料、英
    發(fā)表于 07-30 18:31
    <b class='flag-5'>高效率</b>、6通道、白光LED驅動器,帶I2<b class='flag-5'>C</b>接口 skyworksinc

    高電流、高效率電荷泵,具有自動定時器 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()高電流、高效率電荷泵,具有自動定時器相關產(chǎn)品參數(shù)、數(shù)據(jù)手冊,更有高電流、高效率電荷泵,具有自動定時器的引腳圖、接線圖、封裝手冊、中文資料、英文資料,高電流、高效率電荷泵,具有自動定時器真值表,高電流、
    發(fā)表于 07-29 18:32
    高電流、<b class='flag-5'>高效率</b>電荷泵,具有自動定時器 skyworksinc

    求助,關于srammaster.cydsn中狀態(tài)機的問題求解

    晚上好。 我目前正在學習 GPIF II。 查看..EZ-USB FX3 SDK1.3firmwaregpif_examplescyfxsrammastersrammaster.cydsn中的狀態(tài)機,有狀態(tài)START和START1。 這意味著什么?
    發(fā)表于 05-12 06:20
    庆城县| 镇原县| 茶陵县| 铜川市| 丰宁| 汝城县| 永城市| 浑源县| 岳普湖县| 甘洛县| 湘潭市| 黑龙江省| 莱芜市| 绩溪县| 克东县| 乐昌市| 安庆市| 千阳县| 大埔区| 朝阳市| 扎赉特旗| 海宁市| 东方市| 平安县| 沽源县| 屏东市| 合作市| 盐亭县| 青州市| 花莲县| 平武县| 二连浩特市| 枣庄市| 娄底市| 长沙县| 墨玉县| 富裕县| 昆山市| 连江县| 阜平县| 改则县|