C 语言结构体数组,函数指针实现简单的菜单选项功能
需求 需要通过 C 语言实现简单的数码管或者段码液晶屏的简单的菜单选项功能 解决 结构体申明和定义 在 .h 文件中申明: typedef struct value_channel { unsigned char dir; unsigned int ADCValue[128]; }v_c; extern v_c value[4]; 在 .c 文件中定义 v_c value[4]; 函数指针 定义一个函数指针 void ( * fp)(void); 函数功能和跳转 void fun_start_01(void); { ...... } void fun_start(void) { switch(cs) { case 01: fp=fun_start_01; break; } } 在菜单调用的地方使用 ( * fp)(); 即可调用相应的菜单项。 函数地址 函数地址也可以放在数组中来调用: typedef void( * dis_turn)(void); void dis_turn_1(void) void dis_turn_2(void) dis_turn dis[]={dis_turn_1,dis_turn_2}; main() { dis[0](); dis[1](); } 实现菜单 typedef void(*FUN_P)(void);//(int Data) typedef struct Message_Item { unsigned char cStatus; FUN_P fnProcess; }MSG_ITEM; MSG_ITEM MSGMap[]={{0x00,fun_start},{0x01,fun_normal},{0x02,fun_set0},{0x03,fun_gas},{0x04,fun_set}}; void SearchMSGMAP(void) //(unsigned char cStatus) { unsigned char n=0; for(n=0;n<UBOND(MSGMap);n++) { if(MSGMap[n]....