Makro CLASS Äquivalent in C
In C, im Gegensatz zum Makro FUNCTION, das bereitstellt B. den Namen der aktuellen Funktion, gibt es kein integriertes Makro, das den Namen der aktuellen Funktion direkt bereitstellt Klasse.
Lösung
Wie in der bereitgestellten Antwort erwähnt, kann eine ähnliche Funktionalität mit der Methode typeid(*this).name() erreicht werden. Diese Methode weist jedoch Einschränkungen auf, wenn sie in statischen Methoden verwendet wird.
Für statische Methoden und allgemeine Szenarien stehen alternative Ansätze mithilfe von Makros zur Verfügung. Ein Ansatz beinhaltet die Verwendung des Makros PRETTY_FUNCTION:
Für Methodennamen:
#define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__) inline std::string methodName(const std::string& prettyFunction) { // Extract and return the method name ... }
Für Klassennamen:
#define __CLASS_NAME__ className(__PRETTY_FUNCTION__) inline std::string className(const std::string& prettyFunction) { // Extract and return the class name ... }
Beachten Sie, dass dieser Ansatz auf dem basiert PRETTY_FUNCTION Makro, das spezifisch für bestimmte Compiler wie gcc ist.
Das obige ist der detaillierte Inhalt vonWie erhalte ich den aktuellen Klassennamen in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!