zbh-avr 发表于 2009-8-14 21:57:05

有个液晶的宏定义,看不明白,想请傻孩子解释下~~

最近在研究一个菜单层序,看了一个PDF,一个占用内存极少的菜单系统的实现;里面有段代码,读不明白;

#define MenuWhat(n) {(U8 **)n,(sizeof(n)/sizeof(U8 *)),0}

//-----------------------------------------------------
//Bar型菜单的数据结构
struct Menu
{
//    U8 _CONST_ **Text;   //指向显示内容数组的指针
    U8 **Text;   //指向显示内容数组的指针
    U8 TextNum;         //项个数
    void* (*Action)();//对应的执行函数
};

//图标层
_CONST_ struct Menu IcoMenu[] =
{
MenuWhat(TopItemCN),//该功能是用来显示语言的,在英语和汉语之间的切换
MenuWhat(TopItemEN),
};
//---------------------------------------------------
//各个菜单的资源
//命名方式是:
//---------------------------------------------------
//顶层菜单


U8 * _CONST_ TopItemCN[]=
{
{"功能"},
{"参数"},
{"测量"},
{"语言"},
{"测试"},
};


U8 * _CONST_ TopItemEN[]=
{
{"Function"},
{"Parameter"},
{"Measure"},
{"Language"},
{"Test"},
};

zbh-avr 发表于 2009-8-14 21:57:40

这个宏定义是什么意思?#define MenuWhat(n) {(U8 **)n,(sizeof(n)/sizeof(U8 *)),0} ;

zbh-avr 发表于 2009-8-14 22:00:20

还有就是这个结构体:
struct Menu
{
//    U8 _CONST_ **Text;   //指向显示内容数组的指针
    U8 **Text;   //指向显示内容数组的指针
    U8 TextNum;         //项个数
    void* (*Action)();//对应的执行函数
};
void* (*Action)();是不是定义了一个函数指针,函数的参数无,函数的返回值是 一个空指针;
如果是的话,为什么在里要定义为一个空指针呢?
页: [1]
查看完整版本: 有个液晶的宏定义,看不明白,想请傻孩子解释下~~