我是靠谱客的博主 眼睛大白云,最近开发中收集的这篇文章主要介绍C语言项目设计——状态机设计(一)状态机设计——Hard code 模式(二)状态机设计——宏文件注册模式,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
C语言项目设计——状态机设计
- (一)状态机设计——Hard code 模式
- (二)状态机设计——宏文件注册模式
(一)状态机设计——Hard code 模式
设计二维状态机,pipeline.h
#ifndef _PIPELINE_H_
#define _PIPELINE_H_
#include "deftype.h"
/**********************************************************************************
* Global Declaration
***********************************************************************************/
/**@enum enum_state
* @brief 定义状态机的状态类型
*/
enum enum_state {
EM_STATE_DEFAULT,
EM_STATE_ONE,
EM_STATE_TWO,
EM_END
};
typedef int_32(*func)(void* pstcontext);
/**@struct st_app_list
* @brief using the app list to define a pipeline n
* 定义存储一个状态机对应的pipe的函数列表
*/
typedef struct _st_app_list {
enum enum_state state;
func* pfun;
}st_app_list;
/**@struct st_pipe
* @brief define struct of pipe n
* 定义存储一个pipe的结构
*/
typedef struct _st_pipe {
enum enum_state state;
void* context;
} st_pipe;
/**********************************************************************************
* Global Variable Declaration
***********************************************************************************/
/**@name 状态机全局参数
* @brief 等全局参数
* @{
*/
extern st_app_list gpst_state_table[EM_END]; //2D state machine
extern func app_list_default[]; //EM_STATE_DEFAULT
extern func app_list_one[]; //EM_STATE_ONE
extern func app_list_two[]; //EM_STATE_TWO
/** @} 状态机全局参数 */
#endif // !_PIPELINE_H_
设计二维状态机,pipeline.c
#include"../inc/pipeline.h"
#inclue "app_config.h"
/**********************************************************************************
* Local Variable
***********************************************************************************/
/**********************************************************************************
* Global Variable
***********************************************************************************/
func app_list_default[] = {
isp_gamma,
NULL
};
func app_list_one[] = {
isp_gamma,
NULL
};
func app_list_two[] = {
isp_gamma,
NULL
};
st_app_list gpst_state_table[EM_END] = {
{EM_STATE_DEFAULT, app_list_default},
{EM_STATE_ONE, app_list_one},
{EM_STATE_TWO, app_list_two}
};
/**********************************************************************************
* Local Funcation Declaration
***********************************************************************************/
/**********************************************************************************
* Global Funcation
***********************************************************************************/
/**********************************************************************************
* Local Funcation
***********************************************************************************/
(二)状态机设计——宏文件注册模式
最后
以上就是眼睛大白云为你收集整理的C语言项目设计——状态机设计(一)状态机设计——Hard code 模式(二)状态机设计——宏文件注册模式的全部内容,希望文章能够帮你解决C语言项目设计——状态机设计(一)状态机设计——Hard code 模式(二)状态机设计——宏文件注册模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复