クラス名の 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 サイトの他の関連記事を参照してください。