函数
函数一般遵循的格式:函数的返回类型、函数名、参数列表;
void func(void) --> 对应的指针 void (*P)(void)
typedef定义函数指针
typedef int (*funptr)(int,int) // typedef行
int (*fp)(int,int); //原型行
fun_ptr fp; //应用行
原型行:创建了一个类型为int(*)(int,int)的函数指针fp。
typedef enum
{
FSM_NOTHING,
FSM_ACTION
}StateResult;
typedef StateResult (*StateFunction) //1
(uint8_t StateMode,
void *pStatctl,
Event_List_t xEvent,
void *parameter);
typedef struct _Fsm
{
StateFunction CurrentStateFunc; //2
}State_Fsm_t;
State_Fsm_t Statctl;
1. 创建了一个StateResult (*) ( ... )的函数指针,函数返回值类型是StateResult的枚举类型
原型是 StateResult 函数名 (参数)
2. 创建了一个StateResult类型的函数指针CurrentStateFunc。函数的返回值类型是StateResult。
typedef StateResult (*StateFunction)(uint8_t StateMode, void *pStatctl, Event_List_t xEvent, void *parameter);
typedef struct QEventTag {
unsigned int sig;
unsigned char dynamic_;
} QEvent;
struct QHsmTag;
typedef void(*QState)(struct QFsmTag *, QEvent const *); // 1
typedef QState (*QHsmState)(struct QHsmTag *, QEvent const *); // 2
typedef QState QSTATE; // 3
typedef struct QHsmTag {
QHsmState state;
QHsmState source;
QHsmState insert;
QHsmState target;
} QHsm;
1. 创建了一个void(*QState)(struct QFsmTag *, QEvent const *) 的函数指针,返回值类型是void。
2. 创建了一个QState (*QHsmState)(struct QHsmTag *, QEvent const *)的函数指针,返回值类型是QState的函数指针。