#include<stdio.h>
#define GET_MSG_TYPE(msg_parse) ((msg_parse)->msg_type)
#define GET_MSG_CONT(msg_parse) ((msg_parse)->msg_cont)
typedef void * VOID_PTR;
typedef struct dl_msg_tag{
int msg_type;
int msg_cont;
}dl_msg_t;
typedef struct ul_msg_tag{
int msg_type;
int msg_cont;
}ul_msg_t;
typedef void(*msg_parsr_func)(VOID_PTR msg_body);
typedef struct msg_parsr_func_tag{
int msg_type;
msg_parsr_func func_enty;
}msg_parsr_func_t;
void dl_msg_parse(VOID_PTR dl_msg){
dl_msg_t *dl_msg_tmp;
dl_msg_tmp = (dl_msg_t *)dl_msg;
printf("msg_type = %d\t msg_cont = %d\n",dl_msg_tmp->msg_type,dl_msg_tmp->msg_cont);
}
void ul_msg_parse(VOID_PTR ul_msg){
ul_msg_t *ul_msg_tmp;
ul_msg_tmp = (ul_msg_t *)ul_msg;
printf("msg_type = %d\t msg_cont = %d\n",ul_msg_tmp->msg_type,ul_msg_tmp->msg_cont);
}
msg_parsr_func_t msg_parse_func_array[2]={
{-1,dl_msg_parse},
{1,ul_msg_parse},
};
int main(int argc,char **argv){
dl_msg_t dl_msg = {-1,100};
ul_msg_t ul_msg = {1 ,1000};
msg_parse_func_array[1].func_enty(&dl_msg);
printf("%d",GET_MSG_TYPE(&dl_msg));
return 0;
}