IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    UE反射实现分析:反射代码生成(一)

    查利鹏发表于 2021-03-10 15:14:19
    love 0

    之前写了两篇UE中实现反射的文章分析,介绍了UE的反射基础概念和依赖的一些C++特性,本篇文章开始分析UE反射实现的具体流程。

    C++标准中并没有反射的特性,UE使用的反射是基于标记语法和UHT扫描生成辅助代码来实现的一套机制,正如David Wheeler的那句名言一样:“All problems in computer science can be solved by another level of indirection”,UHT做的就是这样的事情,在真正执行编译之前分析标记代码并产生真正的C++代码,收集反射类型的元数据,供运行时之用。

    UHT生成的代码内容很多,为了避免文章组织上的混乱,本篇文章主要讲GENERATED_BODY/UFUNCTION等反射标记通过UHT之后生成到generated.h中的真正的C++代码。

    UHT生成的代码分别在generated.h和gen.cpp中,generated.h中的代码大多是定义了一些宏,用在所声明的类内通过编译器预处理来添加通用成员,gen.cpp中的代码则是UHT基于反射标记生成的用来描述类反射信息的具体代码,genrated.h和gen.cpp也是为了声明和定义分离。



沪ICP备19023445号-2号
友情链接