(34)先是 GENERATED_UINTERFACE_BODY( ) :
cpp
UINTERFACE(MinimalAPI, meta=(CannotImplementInterfaceInBlueprint))
class UNavAgentInterface : public UInterface // GENERATED_UINTERFACE_BODY()
{
// GENERATED_UINTERFACE_BODY() 这个宏展开后,就是下面的代码
__pragma (warning(push))
__pragma (warning(disable: 4995))
__pragma (warning(disable: 4996))
private:
static void StaticRegisterNativesUNavAgentInterface();
friend struct Z_Construct_UClass_UNavAgentInterface_Statics;
public:
private:
UNavAgentInterface& operator=(UNavAgentInterface&&);
UNavAgentInterface& operator=(const UNavAgentInterface&);
__declspec(dllimport) static UClass* GetPrivateStaticClass();
public:
static constexpr EClassFlags StaticClassFlags = EClassFlags((CLASS_Abstract | CLASS_Interface | CLASS_Intrinsic));
typedef UInterface Super;
typedef UNavAgentInterface ThisClass;
inline static UClass* StaticClass() { return GetPrivateStaticClass(); }
inline static const TCHAR* StaticPackage() { return L"/Script/Engine"; }
inline static EClassCastFlags StaticClassCastFlags() { return CASTCLASS_None; }
inline
void* operator new(const size_t InSize, EInternal InInternalOnly,
UObject* InOuter = (UObject*)GetTransientPackage(),
FName InName = NAME_None, EObjectFlags InSetFlags = RF_NoFlags) {
return StaticAllocateObject(StaticClass(), InOuter, InName, InSetFlags);
}
inline void* operator new(const size_t InSize, EInternal* InMem) { return (void*)InMem; }
inline void operator delete(void* InMem) { ::operator delete(InMem); }
friend FArchive& operator<<(FArchive& Ar, UNavAgentInterface*& Res) { return Ar << (UObject*&)Res; }
friend void operator<<(FStructuredArchive::FSlot InSlot, UNavAgentInterface*& Res) { InSlot << (UObject*&)Res; }
__declspec(dllimport) UNavAgentInterface(const FObjectInitializer& ObjectInitializer = FObjectInitializer::Get());
static void __DefaultConstructor(const FObjectInitializer& X) { new((EInternal*)X.GetObj())UNavAgentInterface(X); }
__declspec(dllimport) UNavAgentInterface(FVTableHelper& Helper);;
static UObject* __VTableCtorCaller(FVTableHelper& Helper) {
return new (EC_InternalUseOnlyConstructor, (UObject*)GetTransientPackage(),
NAME_None, RF_NeedLoad | RF_ClassDefaultObject | RF_TagGarbageTemp) UNavAgentInterface(Helper);
};
private:
UNavAgentInterface(UNavAgentInterface&&);
UNavAgentInterface(const UNavAgentInterface&);
public:
__declspec(dllimport) virtual ~UNavAgentInterface();
__pragma (warning(pop));
}; // 接口的双反射系统
(35) 原版代码,有这两个宏 :

(36) 宏展开 :

(37)
谢谢