在C 中擷取類別資訊:CLASS 巨集
在C 中,CL
CLASS 巨集實作
但是,要注意的是CLASS 不是 C 標準中正式定義的巨集。相反,它的實作可能會根據編譯器和平台的不同而有所不同。
為 gcc 定義的一種常見實作是PRETTY_FUNCTION 宏,其中包含類別名稱和函數名稱。儘管如此,這個宏並沒有標準化,它的行為在不同的編譯器中可能會有所不同。
替代解決方案
在跨編譯器的可移植性至關重要的場景中, typeid(*this ).name() 可用於獲取限定的類別名,包括命名空間。但是,此方法僅在有效的 this 指標存在時適用,靜態方法呼叫中可能不會出現這種情況。平台特定宏
某些編譯器可能提供特定於平台的巨集來擷取類別資訊。例如,Microsoft Visual Studio 提供了 __declspec(dllexport) 和 __declspec(dllimport) 屬性,可用來跨平台方式擷取類別名稱。類別和方法的自訂巨集名稱
為了實現更通用和可移植的方法,可以定義自訂巨集來從PRETTY_FUNCTION或typeid(*this).name():
#define __CLASS_NAME__ className(__PRETTY_FUNCTION__) #define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__)
以上是如何在 C 中檢索類別資訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!