在main函数前执行一些代码,加入一些预定义信息.
具体方式:
1.每个定义了GENERATED_BODY()的类,都会自定义一些全局静态变量,就是这些变量初始化的时候,在main函数之前执行的代码

image.png
通过这些宏定义和ue4的自身预处理,会在XXX.generated.h文件中生成相关定义

image.png

image.png
经过不断的变换,最终定义了这个全局静态变量,并且,这个变量还不是指针,是个类的实体对象,即:是要进行初始化的,并且在main函数之前调用构造函数.

image.png

image.png
跳入TClassCompiledInDefer类中看一下具体定义

image.png
我们看到该构造函数里面调用了UClassCompiledInDefer函数,具体看一下这个函数是怎么实现的.
红线框住的东西就是各种存储UClassInfo的容器.

image.png

image.png
在编辑器启动的时候,main函数之前,就注册了这些编译信息.

image.png