首頁 >後端開發 >C++ >如何取得 C 中目前的類別名稱?

如何取得 C 中目前的類別名稱?

Linda Hamilton
Linda Hamilton原創
2024-11-07 21:32:03969瀏覽

 How Can I Get the Current Class Name in C  ?

類別名稱FUNCTION 的巨集等效

開發人員經常遇到需要使用以下方式存取目前函數名稱的情況: C 中的FUNCTION 巨集。然而,用於存取類別名稱的類似巨集並不是立即顯而易見的。

替代解決方案

雖然不存在與 FUNCTION 完全相同的內容類別名稱、替代方法可以提供此資訊。可以使用 typeid(*this).name() ,但它在靜態方法呼叫中存在限制。

PRETTY_FUNCTION 和第三方巨集

PRETTY_FUNCTION 巨集傳回函數和類別名稱。但是,它的使用特定於 GCC 編譯器。

也可以利用第三方宏,例如METHOD_NAMECLASS_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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn