用函数指针代替switch-case
2015-11-21 21:36
471 查看
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](); } }
相关文章推荐
- HDU 5569 matrix
- android 5.0 -- 主题
- JavaSE__获取Java程序运行的路径 | 获取当前jar包的路径
- Linux笔记(1):Linux目录结构
- HDU 3951 Coin Game(博弈取对称思路)
- 如何看Mac电脑的具体CPU型号
- bash手册
- cinder-volume服务重启失败
- 幂级数
- V4L2 soc camera 分析 - 系统架构图
- 机器学习资料
- hdu 2918 Tobo or not Tobo(IDA*算法)
- AngularJS 入门学习
- Android开发中插入新的Activity
- Linux下ffmpeg的完整安装
- muduo_base 源码分析:Timestamp
- java.lang.ClassCastException android.widget.RelativeLayout LayoutParams 异常
- 实现android注册登陆功能的客户端服务器源码与解析socket
- 论OI中几种常见的数据生成方法
- 旋转编码器的Arduino使用方法