打印
[STM32F1]

下边这段代码怎么理解,

[复制链接]
1074|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wang12zhe|  楼主 | 2014-6-14 22:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#define MenuWhat(n) {(u8 **)n,(sizeof(n)/sizeof(u8 *)),0}
u8 **DispItem_TT;

//Bar型菜单的数据结构
struct Menu
{
    u8 **Text;     //指向显示内容数组的指针
    u8 TextNum;         //项个数
    void* (*Action)();  //对应的执行函数
};
//定义TT菜单属性
typedef struct
{
     struct Menu menu;
     u8 FunNum;//功能个数
    //const u8 menu_type[11];
}TT_MENU_STUR;

//定义二级菜单
u8 *const MonitorMenu[]=
{
   ////////////////
  "Status=1 INPUT=2OUTPUT=3 IQDV=4>",
  "BUSV&C=5  TEMP=6VERSION=7      >",
  "DOORWIDTH=8       ",
   ////////////////////////////////
};
u8 *const TestMenu[]=
{
   ////////////////
  "SINGLE=1 CYCLE=2EVENT=3 LOGCLR=4",
   ////////////////////////////////
};
u8 *const SetMenu[]=
{
   ////////////////
  "OpenProf=1      CloseProf=2   >",
  "CNTRL=3         AUXILIARY=4     ",
   ////////////////////////////////
};
u8 *const InstallMenu[]=
{
   ////////////////
  "INST1=1 WIRCHK=2Learn1=3Learn2=4",
   ////////////////////////////////
};


const TT_MENU_STUR level2MenuAttr[] = {{MenuWhat(MonitorMenu),8},\
                                        {MenuWhat(TestMenu),4},\
                                        {MenuWhat(SetMenu),4},\
                                        {MenuWhat(InstallMenu),4},\
                                      };//1屏 共9个选择 没层选项个数
                                      
void DisLevel2MenuInit(void)
{
    ClrTTDisBuffer();
    WireCheckFlag = 0;
    //ItemNum_TT = level2MenuAttr[TTDisStru.DisGruopIndex-1].menu.TextNum;//(*BarMenu_TT).TextNum;
    DispItem_TT = level2MenuAttr[TTDisStru.DisGruopIndex-1].menu.Text+TTDisStru.ScreenCnt;
    strcpy(TTDisBuffer,*DispItem_TT);
    SetTTDisBuffer();//清字符串结束标志
    if(Sci1.state.CmdSet == 0)
    Sci1.state.ComType = 7;
    /* BarMenu_TT = &MonitorMenuDis[0];
    ItemNum_TT = (*BarMenu_TT).TextNum;
    DispItem_TT = (*BarMenu_TT).Text+TTDisStru.ParIndexCursor;
    ClrTTDisBuffer();
    TTDisBufferCopy( (*DispItem_TT),0);*/
    //TTDisBuffer[31]='>';
}


关于这一句    DispItem_TT = level2MenuAttr[TTDisStru.DisGruopIndex-1].menu.Text+TTDisStru.ScreenCnt;

level2MenuAttr[TTDisStru.DisGruopIndex-1].menu.Text是一个应该是一个指向指针的指针吧,那再加上一个TTDisStru.ScreenCnt怎么理解,
(TTDisStru.ScreenCnt取值是数字1、2、3、4里的一个)
指向指针的指针加上数字怎么理解,

请大神帮帮忙解释一下
沙发
hyperion007| | 2014-6-15 21:34 | 只看该作者
移动指针呀!从名字上理解,是不是显示第一屏,第二屏。。。的内容!

使用特权

评论回复
板凳
huzi2099| | 2014-6-15 23:42 | 只看该作者
调试器跟一下就知道了.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

205

帖子

1

粉丝