⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 关于宏定义函数.txt

📁 个人搜集的一些笔试面试题
💻 TXT
字号:
#define   BEGIN_MENU(   name   )   \   
  static   const   MfwMnuItem   name##Items   []   =   {   
    
  #define   MENU_ITEM_ICON(   icon,   extra,   msg,   handler,   attrFunction   )   \   
          {   icon,   (void*)extra,   0,   (char*)   msg,   0,       (MenuFunc)handler,   attrFunction   }   
    
  #define   MENU_ITEM(   msg,   handler,   attrFunction   )   \   
          {   0,0,0,     (char*)   msg,   0,     (MenuFunc)handler,   attrFunction   }   
    
  #define   END_MENU(   name,   area,   col,   extra,   style,titleTxtID   )   \   
  };   \   
  \   
  static   const   MfwMnuAttr   name   =   {   \   
          (MfwRect   *)   &area,   style,   0xFF,   (MfwMnuItem   *)   name##Items,   sizeof(   name##Items   )   /   sizeof(   MfwMnuItem   ),     col,   titleTxtID,   NULL,   MNUATTRSPARE,   extra   \   
  };   
    
  .......   
    
  BEGIN_MENU(   menuBookmarkOptions   )   
          MENU_ITEM_ICON((MfwIcnAttr*)(&list_number_item_icon_1),   &list_sec_phbk_extra,   TxtGoTo,   AUI_bookmarks_goto   ,   item_flag_none   ),   
          MENU_ITEM_ICON((MfwIcnAttr*)(&list_number_item_icon_2),   &list_sec_phbk_extra,   TxtEditName,   AUI_bookmarks_edit   ,   item_flag_none   )   
    
  END_MENU(   menuBookmarkOptions,   menuListArea,   COLOUR_LIST_SUBMENU,   (void*)&mmi_second_level_extra_data,   DEF_MENU_STYLE,   TxtBookmarkTitle   )   
    
    
  不懂这段代码的用法,请赐教   
  
定义了四个类函数宏,把BEGIN_MENU展开,就是:   
    
  static   const   MfwMnuItem   menuBookmarkOptionsItems   []   =   {{(MfwIcnAttr*)(&list_number_item_icon_1),(void*)&list_sec_phbk_extra,0,(char*)TxtGoTo,0,(MenuFunc)AUI_bookmarks_goto,item_flag_none},{(MfwIcnAttr*)(&list_number_item_icon_2),(void*)&list_sec_phbk_extra,   0,   (char*)TxtEditName,0,(MenuFunc)AUI_bookmarks_edit,item_flag_none}};static   const   MfwMnuAttr   menuBookmarkOptions   =   {(MfwRect   *)   &menuListArea,   DEF_MENU_STYLE,   0xFF,   (MfwMnuItem   *)   menuBookmarkOptionsItems,   sizeof(   menuBookmarkOptionsItems   )   /   sizeof(   MfwMnuItem   ),     COLOUR_LIST_SUBMENU,   TxtBookmarkTitle,   NULL,   MNUATTRSPARE,   (void*)&mmi_second_level_extra_data};   
    
  实际上是两条变量定义和初始化,第一条定义了一个静态常量数组menuBookmarkOptionsItems,它有两个元素,分别是{(MfwIcnAttr*)(&list_number_item_icon_1),(void*)&list_sec_phbk_extra,0,(char*)TxtGoTo,0,(MenuFunc)AUI_bookmarks_goto,item_flag_none}和{(MfwIcnAttr*)(&list_number_item_icon_2),(void*)&list_sec_phbk_extra,   0,   (char*)TxtEditName,0,(MenuFunc)AUI_bookmarks_edit,item_flag_none},从元素的构成来看,MfwMnuItem应该是一个结构类型。   


  第二条定义了一个静态常量MfwMnuItem结构变量menuBookmarkOptions,其成员是(MfwRect   *)   &menuListArea,   DEF_MENU_STYLE,   0xFF,   (MfwMnuItem   *)   menuBookmarkOptionsItems,   sizeof(   menuBookmarkOptionsItems   )   /   sizeof(   MfwMnuItem   ),     COLOUR_LIST_SUBMENU,   TxtBookmarkTitle,   NULL,   MNUATTRSPARE,   (void*)&mmi_second_level_extra_data。



你就把定义给替代一下不就出来了(有时甚至可以把它当成字符替代)   
  ##是连接符,比如这个定义   
  #define   BEGIN_MENU(   name   )   \   
  static   const   MfwMnuItem   name##Items   []   =   {   
  展开这个   
  BEGIN_MENU(   menuBookmarkOptions   )   
  就是:   
  static   const   MfwMnuItem   menuBookmarkOptionsItems   []   =   {  
补充: 
  #是将后面的字符转成字符串   
  比如   #Hello   转成   "Hello"
    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -