免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1336 | 回复: 0
打印 上一主题 下一主题

求助:能不能定义一个宏#define MENU_SIZE_DEF(A,B) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-04 18:31 |只看该作者 |倒序浏览
求助:能不能定义一个宏#define MENU_SIZE_DEF(A,B),使其相当于#define MainMenuSize    9


  1. typedef struct MenuItem_t   
  2. {
  3.     uint8_t         Size;
  4.     uint8_t         * Str;
  5.     void                 (*Sub)();
  6.     struct                 MenuItem_t * Child;
  7.     struct                 MenuItem_t * Parent;
  8. }MenuItem_t;

  9. #define MENU_STR(A,B)                A##B##Str
  10. #define MENU_SIZE(A)                A##Size       
  11. #define MENU_STR_DEF(A,B,C)        const char        MENU_STR(A,B)[] PROGMEM=C
  12. //#define MENU_SIZE_DEF(A,B)        ??????????????????????????????????????

  13. #define MENU_ITEM(A,B,C,D,E)        {MENU_SIZE(A),(uint8_t *)MENU_STR(A,B),C,D,E}
  14. #define NULL_SUB                         (void (*)(void))0
  15. #define NULL_MENU                (MenuItem_t *)0       


  16. #define MainMenuSize        9
  17. //MENU_SIZE_DEF(MainMenu,9)   
  18. /*求助:能不能定义一个宏#define MENU_SIZE_DEF(A,B),使其相当于#define MainMenuSize    9 */
  19. MENU_STR_DEF(MainMenu,0,"主选单0");
  20. MENU_STR_DEF(MainMenu,1,"主选单1");
  21. MENU_STR_DEF(MainMenu,2,"主选单2");
  22. MENU_STR_DEF(MainMenu,3,"主选单3");
  23. MENU_STR_DEF(MainMenu,4,"主选单4");
  24. MENU_STR_DEF(MainMenu,5,"主选单5");
  25. MENU_STR_DEF(MainMenu,6,"主选单6");
  26. MENU_STR_DEF(MainMenu,7,"主选单7");
  27. MENU_STR_DEF(MainMenu,8,"主选单8");

  28. const MenuItem_t MainMenu[MENU_SIZE(MainMenu)] PROGMEM={
  29. /**********选单名*****序号******功能函数*********子选单********** 父选单********/
  30. MENU_ITEM(MainMenu,        0,        NULL_SUB,        NULL_MENU,        NULL_MENU),
  31. MENU_ITEM(MainMenu,        1,        NULL_SUB,        NULL_MENU,        NULL_MENU)
  32. MENU_ITEM(MainMenu,        2,        NULL_SUB,        NULL_MENU,        NULL_MENU),
  33. MENU_ITEM(MainMenu,        3,        NULL_SUB,        NULL_MENU,        NULL_MENU),
  34. MENU_ITEM(MainMenu,        4,        NULL_SUB,        NULL_MENU,        NULL_MENU),
  35. MENU_ITEM(MainMenu,        5,        NULL_SUB,        NULL_MENU,        NULL_MENU),
  36. MENU_ITEM(MainMenu,        6,        NULL_SUB,        NULL_MENU,        NULL_MENU),
  37. MENU_ITEM(MainMenu,        7,        NULL_SUB,        NULL_MENU,        NULL_MENU),
  38. MENU_ITEM(MainMenu,        8,        NULL_SUB,        NULL_MENU,        NULL_MENU),
  39. };
复制代码

[ 本帖最后由 ATmega32 于 2007-6-4 18:33 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP