用函数指针代替switch-case

来源:互联网 发布:手机淘宝一般交易流程 编辑:程序博客网 时间:2024/06/05 10:02


static void ShowMenu(E_MENU_INDEX eIndex); ///< 显示指定的菜单static void ShowMenu_main(); ///< 显示主菜单static void ShowMenu_rec_add(); ///< 显示菜单-添加数据static void ShowMenu_rec_del(); ///< 显示菜单-删除数据static void ShowMenu_rec_del_by_index(); ///< 显示菜单-按照索引删除static void ShowMenu_rec_del_by_content(); ///< 显示菜单-按照内容删除static void ShowMenu_rec_modify(); ///< 显示菜单-修改数据static void ShowMenu_rec_query(); ///< 显示菜单-查询static void ShowMenu_rec_query_by_index(); ///< 显示菜单-按照记录索引查询static void ShowMenu_rec_query_by_content(); ///< 显示菜单-按照记录内存查询static void ShowMenu_StatisticsUsage(); ///< 显示菜单-字符使用率统计static void ShowMenu_Defragmentation(); ///< 显示菜单-碎片整理static void ShowMenu_DispDiskUsage(); ///< 显示菜单-内存数据库使用率typedef void (*PFN_SHOWMENU_X)();


PFN_SHOWMENU_X g_fnProcMenu[] = {ShowMenu_main, ShowMenu_rec_add,ShowMenu_rec_del,ShowMenu_rec_modify,ShowMenu_rec_query,ShowMenu_StatisticsUsage,ShowMenu_DispDiskUsage,ShowMenu_Defragmentation};static void ShowMenu(E_MENU_INDEX eIndex){    CleanScreen();/// 用函数指针代替switch-case, 简化逻辑处理/// 这里原来是一小撮switch-case/// 这里用函数指针代替,也简洁一些/// 如果switchcase比较多, 用函数指针的效果就更好if (NULL != g_fnProcMenu[eIndex]){g_fnProcMenu[eIndex]();if (eMenuIndex_Defragmentation == eIndex){ShowMenu_DispDiskUsage(); ///< 碎片整理完成后, 分析磁盘使用率}}else{g_fnProcMenu[eMenuIndex_main]();}}


1 0
原创粉丝点击