ホームページ  >  記事  >  バックエンド開発  >  C で現在のクラス名を取得するにはどうすればよいですか?

C で現在のクラス名を取得するにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-07 21:32:03866ブラウズ

 How Can I Get the Current Class Name in C  ?

クラス名の 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 とサードパーティのマクロは、両方のメソッドにアクセスするための実行可能な代替手段を提供します。およびクラス名を使用して、さまざまなシナリオでのコードの保守性と可読性を確保します。

以上がC で現在のクラス名を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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