请教函数指针的用法

2019-12-22 13:42发布

本帖最后由 jssd 于 2017-10-14 20:33 编辑

  1. void Fun1(void)
  2. {
  3.         LCD_DrawBox(0,0,127,63,BoxModel_Draw,FillType_NoFill);
  4.         LCD_DisplayStr("test",0,0,FN_ASC8x16,FN_ST12,ALPHA_YES,LCD_Graphic_Draw);
  5. }

  6. struct _Page      
  7. {
  8.         void (*pFun)(void);
  9. };

  10. struct _Page menuPage[MAX_PAGE_NUM];

  11. void Init(void)
  12. {
  13.         menuPage[0].pFun = Fun1;
  14. }

  15. void Show(void)
  16. {
  17.         (menuPage[0].pFun)();        //乱码
  18. //        Fun1();                                //正常
  19. }
复制代码

如上代码中,直接用Fun1();则显示正常,使用(menuPage[0].pFun)();则显示乱码
因道行浅,看不出问题出在哪,故求助,非常感谢!

补充:
还有一点就是
void Fun1(void)
{
        LCD_DrawBox(0,0,127,63,BoxModel_Draw,FillType_NoFill);
        LCD_DisplayStr("test",0,0,FN_ASC8x16,FN_ST12,ALPHA_YES,LCD_Graphic_Draw);
}
这个函数去掉 LCD_DrawBox(0,0,127,63,BoxModel_Draw,FillType_NoFill);后显示是正常的,加上就不正常,但如果不是这样使用,单独使用又是正常的。证明函数本身没问题
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。