簡體   English   中英

有函數指針的宏嗎? UE4 C++

[英]Is there a Macro for a Function Pointer? UE4 C++

我在 ue4 c++ 中創建了一個函數指針,但不知道我可以/應該使用哪個宏作為頭文件中的指針。 (像 UPROPERTY() 或 UFUNCTION() 之類的東西)

為什么我什至想使用宏? 由於垃圾收集,據我所知,gb 僅在變量/函數具有宏時才有效。

順便說一句,函數指針調用的性能與普通函數調用一樣嗎?

header.h 代碼:

typedef void (AWeaponGun::*FireTypeFunctionPtr)(void);    
FireTypeFunctionPtr PtrFireType;
    
UFUNCTION()
void FireLineTrace();

file.cpp 代碼:

void AWeaponGun::BeginPlay()
{
    PtrFireType = &AWeaponGun::FireLineTrace;
}

void AWeaponGun::Tick(float DeltaTime)
{
    (this->*PtrFireType)();
}

函數和你的函數指針沒有被分配和釋放,所以在這種情況下你不需要垃圾收集器,因此你不需要任何 UE4 宏(......如果你只考慮垃圾收集器)。

至於性能,函數指針的性能很可能稍差,因為它增加了一個變量並且需要額外的指令才能到達函數。 但在某些情況下,編譯器可能能夠優化某些差異。 您需要檢查在這兩種情況下創建的匯編代碼才能確定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM