首頁 > 後端開發 > C++ > C 中是否有用於類別名稱擷取的 __CLASS__ 巨集?

C 中是否有用於類別名稱擷取的 __CLASS__ 巨集?

Barbara Streisand
發布: 2024-11-08 08:08:02
原創
538 人瀏覽過

Is There a __CLASS__ Macro for Class Name Extraction in C  ?

搜尋 __CLASS__:用於類別名稱擷取的巨集

C 提供 FUNCTION 巨集來擷取目前正在執行的函數的名稱。同樣,開發人員經常想知道是否存在一個等效的巨集來取得類別名稱,類似於 __CLASS__。

答案在於探索 C 語言設計的替代方案。以下是一些可行的選項:

  1. typeid(*this).name():此表達式使用 typeid 運算子和 this 指標產生完全限定的類別名稱。
  2. PRETTY_FUNCTION:可用於 gcc,此巨集提供完整的方法或靜態函數名稱,包括類別名稱。
  3. 自訂巨集:開發人員可以定義自訂巨集來擷取所需的資訊。例如:

    • 對於方法名稱擷取:

      #define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__)
      
      inline std::string methodName(const std::string& prettyFunction) {
          // Extract the method name from __PRETTY_FUNCTION__
          ...
      }
      登入後複製
    • 對於類別名稱擷取:

      #define __CLASS_NAME__ className(__PRETTY_FUNCTION__)
      
      inline std::string className(const std::string& prettyFunction) {
          // Extract the class name from __PRETTY_FUNCTION__
          ...
      }
      登入後複製

這些自訂巨集模擬功能CLASS,但需要仔細考慮處理特殊情況,例如沒有類別上下文的方法或全域函數。

以上是C 中是否有用於類別名稱擷取的 __CLASS__ 巨集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板