ホームページ  >  記事  >  バックエンド開発  >  C でクラス名を抽出するための __CLASS__ マクロはありますか?

C でクラス名を抽出するための __CLASS__ マクロはありますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-08 08:08:02449ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。