Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich den aktuellen Klassennamen in C erhalten?

Wie kann ich den aktuellen Klassennamen in C erhalten?

Linda Hamilton
Linda HamiltonOriginal
2024-11-07 21:32:03866Durchsuche

 How Can I Get the Current Class Name in C  ?

Makroäquivalent von FUNCTION für Klassennamen

Entwickler sehen sich häufig mit der Notwendigkeit konfrontiert, mithilfe von auf den Namen der aktuellen Funktion zuzugreifen FUNCTION Makro in C . Ein ähnliches Makro für den Zugriff auf den Klassennamen ist jedoch nicht sofort ersichtlich.

Alternative Lösungen

Es gibt zwar kein genaues Äquivalent von FUNCTION für Klassennamen können alternative Ansätze diese Informationen liefern. Die Verwendung von typeid(*this).name() kann verwendet werden, stellt jedoch eine Einschränkung bei statischen Methodenaufrufen dar.

PRETTY_FUNCTION und Makros von Drittanbietern

Das Makro PRETTY_FUNCTION gibt sowohl den Funktions- als auch den Klassennamen zurück. Seine Verwendung ist jedoch spezifisch für GCC-Compiler.

Man kann auch Makros von Drittanbietern nutzen, wie z. B. die Makros METHOD_NAME und CLASS_NAME, um die Klasse zu extrahieren und Methodennamen, wie im Beispielcode unten gezeigt:

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__)

Diese Makros bewältigen die Komplexität des Parsens der Klassen- und Methodennamen von __PRETTY_FUNCTION__, einschließlich Fällen, in denen keine Klasse vorhanden ist.

Fazit

Während in C ein direktes Äquivalent zu FUNCTION für Klassennamen fehlt, bieten PRETTY_FUNCTION und Makros von Drittanbietern brauchbare Alternativen für den Zugriff auf beide Methoden und Klassennamen, um die Wartbarkeit und Lesbarkeit des Codes in verschiedenen Szenarien sicherzustellen.

Das obige ist der detaillierte Inhalt vonWie kann ich den aktuellen Klassennamen in C erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn