求助:能不能定义一个宏#define MENU_SIZE_DEF(A,B),使其相当于#define MainMenuSize 9
- typedef struct MenuItem_t
- {
- uint8_t Size;
- uint8_t * Str;
- void (*Sub)();
- struct MenuItem_t * Child;
- struct MenuItem_t * Parent;
- }MenuItem_t;
- #define MENU_STR(A,B) A##B##Str
- #define MENU_SIZE(A) A##Size
- #define MENU_STR_DEF(A,B,C) const char MENU_STR(A,B)[] PROGMEM=C
- //#define MENU_SIZE_DEF(A,B) ??????????????????????????????????????
- #define MENU_ITEM(A,B,C,D,E) {MENU_SIZE(A),(uint8_t *)MENU_STR(A,B),C,D,E}
- #define NULL_SUB (void (*)(void))0
- #define NULL_MENU (MenuItem_t *)0
- #define MainMenuSize 9
- //MENU_SIZE_DEF(MainMenu,9)
- /*求助:能不能定义一个宏#define MENU_SIZE_DEF(A,B),使其相当于#define MainMenuSize 9 */
- MENU_STR_DEF(MainMenu,0,"主选单0");
- MENU_STR_DEF(MainMenu,1,"主选单1");
- MENU_STR_DEF(MainMenu,2,"主选单2");
- MENU_STR_DEF(MainMenu,3,"主选单3");
- MENU_STR_DEF(MainMenu,4,"主选单4");
- MENU_STR_DEF(MainMenu,5,"主选单5");
- MENU_STR_DEF(MainMenu,6,"主选单6");
- MENU_STR_DEF(MainMenu,7,"主选单7");
- MENU_STR_DEF(MainMenu,8,"主选单8");
- const MenuItem_t MainMenu[MENU_SIZE(MainMenu)] PROGMEM={
- /**********选单名*****序号******功能函数*********子选单********** 父选单********/
- MENU_ITEM(MainMenu, 0, NULL_SUB, NULL_MENU, NULL_MENU),
- MENU_ITEM(MainMenu, 1, NULL_SUB, NULL_MENU, NULL_MENU)
- MENU_ITEM(MainMenu, 2, NULL_SUB, NULL_MENU, NULL_MENU),
- MENU_ITEM(MainMenu, 3, NULL_SUB, NULL_MENU, NULL_MENU),
- MENU_ITEM(MainMenu, 4, NULL_SUB, NULL_MENU, NULL_MENU),
- MENU_ITEM(MainMenu, 5, NULL_SUB, NULL_MENU, NULL_MENU),
- MENU_ITEM(MainMenu, 6, NULL_SUB, NULL_MENU, NULL_MENU),
- MENU_ITEM(MainMenu, 7, NULL_SUB, NULL_MENU, NULL_MENU),
- MENU_ITEM(MainMenu, 8, NULL_SUB, NULL_MENU, NULL_MENU),
- };
复制代码
[ 本帖最后由 ATmega32 于 2007-6-4 18:33 编辑 ] |