当前位置: 首页 > news >正文

网站建设的商业计划书湘潭关键词优化报价

网站建设的商业计划书,湘潭关键词优化报价,四面山网站建设,org.wordpress utilsC语言宏定义中X-Micro的使用 在LVGL源码中,全局变量初始化,以及函数声明和定义(LV_ROOTS)的时候的时候,使用到了X-Micro,下面拆解一下这个宏的用法。 下列代码来自:lv_gc.h 头文件 #define L…

C语言宏定义中X-Micro的使用

在LVGL源码中,全局变量初始化,以及函数声明和定义(LV_ROOTS)的时候的时候,使用到了X-Micro,下面拆解一下这个宏的用法。

下列代码来自:lv_gc.h 头文件

#define LV_DISPATCH(f, t, n)            f(t, n)#define LV_ITERATE_ROOTS(f)                                                                            \LV_DISPATCH(f, lv_ll_t, _lv_timer_ll) /*Linked list to store the lv_timers*/                       \LV_DISPATCH(f, lv_ll_t, _lv_disp_ll)  /*Linked list of display device*/                            \LV_DISPATCH(f, lv_ll_t, _lv_indev_ll) /*Linked list of input device*/                              \LV_DISPATCH(f, lv_ll_t, _lv_fsdrv_ll)                                                              \LV_DISPATCH(f, lv_ll_t, _lv_anim_ll)                                                               \LV_DISPATCH(f, lv_ll_t, _lv_group_ll)                                                              \LV_DISPATCH(f, lv_ll_t, _lv_img_decoder_ll)                                                        \LV_DISPATCH(f, lv_ll_t, _lv_obj_style_trans_ll)                                                    \LV_DISPATCH(f, lv_layout_dsc_t *, _lv_layout_list)                                                 \LV_DISPATCH_COND(f, _lv_img_cache_entry_t*, _lv_img_cache_array, LV_IMG_CACHE_DEF, 1)              \LV_DISPATCH_COND(f, _lv_img_cache_entry_t, _lv_img_cache_single, LV_IMG_CACHE_DEF, 0)              \LV_DISPATCH(f, lv_timer_t*, _lv_timer_act)                                                         \LV_DISPATCH(f, lv_mem_buf_arr_t , lv_mem_buf)                                                      \LV_DISPATCH_COND(f, _lv_draw_mask_radius_circle_dsc_arr_t , _lv_circle_cache, LV_DRAW_COMPLEX, 1)  \LV_DISPATCH_COND(f, _lv_draw_mask_saved_arr_t , _lv_draw_mask_list, LV_DRAW_COMPLEX, 1)            \LV_DISPATCH(f, void * , _lv_theme_default_styles)                                                  \LV_DISPATCH(f, void * , _lv_theme_basic_styles)                                                  \LV_DISPATCH_COND(f, uint8_t *, _lv_font_decompr_buf, LV_USE_FONT_COMPRESSED, 1)                    \LV_DISPATCH(f, uint8_t * , _lv_grad_cache_mem)#define LV_DEFINE_ROOT(root_type, root_name) root_type root_name;
#define LV_ROOTS LV_ITERATE_ROOTS(LV_DEFINE_ROOT)#define LV_GC_ROOT(x) x
#define LV_EXTERN_ROOT(root_type, root_name) extern root_type root_name;
LV_ITERATE_ROOTS(LV_EXTERN_ROOT)

在LVGL中,调用 LV_ROOTS 宏声明全局变量,下面拆解宏,宏的拆解从内到外,由于前面

#define LV_DISPATCH(f, t, n)            f(t, n)
#define LV_ITERATE_ROOTS(f)                                                               \f(lv_ll_t, _lv_timer_ll) /*Linked list to store the lv_timers*/                       \f(lv_ll_t, _lv_disp_ll)  /*Linked list of display device*/                            \f(lv_ll_t, _lv_indev_ll) /*Linked list of input device*/ ...... // 其余省略

根据这条宏定义:

LV_DEFINE_ROOT(root_type, root_name) root_type root_name;

把 f 替换为 LV_DEFINE_ROOT,因此就变为:

#define LV_ITERATE_ROOTS(LV_DEFINE_ROOT)                                                               \LV_DEFINE_ROOT(lv_ll_t, _lv_timer_ll) /*Linked list to store the lv_timers*/                       \LV_DEFINE_ROOT(lv_ll_t, _lv_disp_ll)  /*Linked list of display device*/                            \LV_DEFINE_ROOT(lv_ll_t, _lv_indev_ll) /*Linked list of input device*/ ...... // 其余省略

LV_DEFINE_ROOT(lv_ll_t, _lv_timer_ll)

展开之后便是:

lv_ll_t  _lv_timer_ll;

其他的同理,因此这里就对全局链表进行了声明;

如果要把全局变量属性设置为extern,给外部文件使用,只需要修改一下宏,改为下面这种形式,只需要修改一下 宏定义,就可以完成所有全局变量的声明:

#define LV_EXTERN_ROOT(root_type, root_name) extern root_type root_name;
LV_ITERATE_ROOTS(LV_EXTERN_ROOT)

总结:

使用 X-Macro 宏集中管理全局变量,减少代码更简洁,同时提升代码可维护性;

http://www.dtcms.com/a/543095.html

相关文章:

  • 邯郸网站建设服务平台合肥网站设计服务
  • 重庆航运建设发展有限公司网站网站建设框架模板
  • 长沙制作网站设计多少钱网站为什么做静态
  • 系统网站建设新昌网站建设
  • 旅游网站模板免费下载虚拟机wordpress建站
  • 太原做网站个人seo项目是什么
  • 个人备案域名做企业网站上海自己注册公司
  • 什么网站可以做头像用wordpress制作网页的思路
  • 在360上做网站怎么样重庆品牌服装网站建设
  • 网站建设杭州缘择低价网络营销有必要学吗
  • 深圳聘请做网站人员社保在哪个网站做增员
  • 房地产网站解决方案成都 网站
  • 可以做app的网站赤壁网站建设公司
  • wordpress主题的网站模板北京seo排名外包
  • 定制做网站设计wordpress 插件 浮动小人
  • 新余网站制作长沙网站定制公司
  • 做网站是com好还是cn好网站模板ftp
  • 网站定制首页费用小程序头条小游戏
  • 济南网站建设tailook企业电子网站的建设案例
  • 做网站卖菜刀需要什么手续专业网站设计开发网站
  • 做网站必须备案吗小程序开发哪里有
  • 网站首页布局分析福州cms模板建站
  • 合肥电信网站备案望牛墩网站仿做
  • 申请注册网站域名.商城有什么兼职做it的网站
  • 注册过什么网站做网站给客户聊天记录
  • 生物科技公司网站模板北京中小企业建站价格
  • 成都企业网站建设费用好商网的网站可以做中英文切换吗
  • 电子商城网站设计公司哪个好开发游戏需要多少钱
  • 网站开发公司 苏州软件开发微信小程序
  • 上海平台网站开发wordpress 后台 字数统计