## 在C语言中的用法

记录一个开发日常
用##统一某类函数的名字
H文件

//统一解包函数定义
#define DEF_PARSE(name)  \
ParseRet Parse##name (uint8_t *p_mes,uint8_t len_mes)
//统一打包函数定义
#define DEF_PACK(name)   \
PackRet Pack##name ()

//统一解包函数名格式
#define PARSE(name)      \
Parse##name
//统一打包函数名格式
#define PACK(name)       \
Pack##name

//指令解析函数返回值
typedef int ParseRet;
//指令打包函数返回值
typedef int PackRet;
//指令解析函数  p_mes:消息体   mes_len:消息体的长度
typedef ParseRet (* ParseFun)(uint8_t *p_mes,uint8_t len_mes);
//指令回复函数
typedef PackRet (* PackFun)();

//指令表
typedef struct {
    const uint16_t cmd;         //指令
    ParseFun parse;           //指令解析函数
    PackFun pack;             //指令回复函数
    const uint8_t packLen;                      
}CmdNode;

C文件

/*--------------------------------------
函数功能: 回复获取设备信息
---------------------------------------*/
DEF_PACK(ReplyGetDevMess)
{
	........
    return 0;
}
/*--------------------------------------
函数功能: 解析获取设备信息 
---------------------------------------*/
DEF_PARSE(GetDevMess)
{
	.......
return 0;
}

CmdNode g_CmdTable[] =
{
   {GET_DEV_MESS,           PARSE(GetDevMess),       PACK(ReplyGetDevMess),   55},
};

猜你喜欢

转载自blog.csdn.net/qq_28851611/article/details/100567070
今日推荐