類別名稱FUNCTION 的巨集等效
開發人員經常遇到需要使用以下方式存取目前函數名稱的情況: C 中的FUNCTION 巨集。然而,用於存取類別名稱的類似巨集並不是立即顯而易見的。
替代解決方案
雖然不存在與 FUNCTION 完全相同的內容類別名稱、替代方法可以提供此資訊。可以使用 typeid(*this).name() ,但它在靜態方法呼叫中存在限制。
PRETTY_FUNCTION 和第三方巨集
PRETTY_FUNCTION 巨集傳回函數和類別名稱。但是,它的使用特定於 GCC 編譯器。
也可以利用第三方宏,例如METHOD_NAME 和CLASS_NAME 宏來擷取類別和方法名稱,如下面的範例程式碼所示:
inline std::string methodName(const std::string& prettyFunction) { ... } #define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__) ... inline std::string className(const std::string& prettyFunction) { ... } #define __CLASS_NAME__ className(__PRETTY_FUNCTION__)
這些巨集處理從__PRETTY_FUNCTION__解析類別和方法名稱的複雜性,包括沒有類別的情況。
結論
雖然C 缺少與FUNCTION 直接等效的類名,但PRETTY_FUNCTION 直接等效的類名,但
PRETTY_FUNCTION 和提供者提供了存取這兩種方法的可行替代方案和類別名,保證程式碼在各種場景下的可維護性和可讀性。以上是如何取得 C 中目前的類別名稱?的詳細內容。更多資訊請關注PHP中文網其他相關文章!