要用函数直接调用就好啦。为什么还要用指针

2019-07-21 04:40发布

函数指针的概念我知道。我问的就是:要用什么函数直接写到哪儿就行了。干嘛非要用函数指针往过指啊,能举个例子吗?请别回复什么:方便。。。高效。。我就想认认真真明白用函数指针的好处。函数指针初始化要注册指向A函数。那么之后他肯定地址就不变了。如果某些情况出发比如IF(a==1){我把函数指针重新注册成B函数};这我直接判定如果a==1;那么我就执行B函数不一样方便吗?我实在是不懂LINUX的一大堆回调。求指点
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
styleno1
2019-07-21 08:01
/* 数据结构 */
typedef struct _Protocal_Callbacks{
    BOOL (*pPackage_Check)(u8 *pdata, u16 len);  /* 数据包地址域、接口类型、校验确认 */
    BOOL (*pSet_Addr)(u8 addr);                   /* 设置设备地址 */
    BOOL (*pSet_BPS)(u8 bps);                     /* 设置波特率 */
    BOOL (*pSet_Dot_Group)(u8 *pdata, u8 len);   /* 测温点分组配置 */
    BOOL (*pSet_Time)(u8 *pdata, u8 len);         /* 设置时间 */
    BOOL (*pSet_OverTem)(u8 group, s16 tem);                /* 设置过温阈值 */
    BOOL (*pSet_Font)(u8 group, u8 dot, u8 num, u8 *pdata, u8 len);  /* 设置字模 */
    BOOL (*pSet_Tem_Y)(s16 tem);          /* 设置Y轴标度 */
    BOOL (*pRead_Addr)(void);             /* 读地址 */
    BOOL (*pRead_BPS)(void);              /* 读波特率 */
    BOOL (*pRead_Dot_Group)(void);       /* 读分组信息 */
    BOOL (*pRead_OverTem)(void);         /* 读过温阈值 */
    BOOL (*pRead_Version)(void);         /* 读软件版本 */
    BOOL (*pSet_433M_Frq)(u8 frq);       /* 设置433M频点 */
    BOOL (*pSet_Pan_ID)(u16 panid);      /* 设置PanID */
    BOOL (*pRestart_System)(void);       /* 重启设备 */
    BOOL (*pSet_IP_Imf)(u8 *pdata, u8 len);     /* 设置IP信息 */
    BOOL (*pEnd)(void);                   /* 触发包发送 */
    void (*pNULL_Fun)(u8 code);           /* 不支持此选项码 */
    void (*pData_Err)(void);              /* 造成溢出的错误 */
}CB_Typdef;[/mw_shl_code]

举例。                                                                    

一周热门 更多>