Heim > Artikel > Backend-Entwicklung > Wie kann ich den aktuellen Klassennamen in C erhalten?
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!