Heim > Backend-Entwicklung > C++ > Hauptteil

Gibt es ein __CLASS__-Makro für die Klassennamenextraktion in C?

Barbara Streisand
Freigeben: 2024-11-08 08:08:02
Original
447 Leute haben es durchsucht

Is There a __CLASS__ Macro for Class Name Extraction in C  ?

Die Suche nach __CLASS__: Ein Makro zur Klassennamenextraktion

C stellt das Makro FUNCTION bereit, um den Namen der aktuell ausgeführten Funktion abzurufen. Ebenso fragen sich Entwickler oft, ob es ein entsprechendes Makro zum Abrufen des Klassennamens gibt, ähnlich wie __CLASS__.

Die Antwort liegt in der Suche nach Alternativen aufgrund des C-Sprachdesigns. Hier sind einige praktikable Optionen:

  1. typeid(*this).name(): Dieser Ausdruck liefert den vollständig qualifizierten Klassennamen unter Verwendung des Typeid-Operators und des This-Zeigers.
  2. PRETTY_FUNCTION: Dieses Makro ist mit gcc verfügbar und stellt den vollständigen Methoden- oder statischen Funktionsnamen einschließlich Klassennamen bereit.
  3. Benutzerdefiniert Makros: Entwickler können benutzerdefinierte Makros definieren, um die gewünschten Informationen zu extrahieren. Zum Beispiel:

    • Für Methodennamenextraktion:

      #define __METHOD_NAME__ methodName(__PRETTY_FUNCTION__)
      
      inline std::string methodName(const std::string& prettyFunction) {
          // Extract the method name from __PRETTY_FUNCTION__
          ...
      }
      Nach dem Login kopieren
    • Für Klassennamenextraktion:

      #define __CLASS_NAME__ className(__PRETTY_FUNCTION__)
      
      inline std::string className(const std::string& prettyFunction) {
          // Extract the class name from __PRETTY_FUNCTION__
          ...
      }
      Nach dem Login kopieren

Diese benutzerdefinierten Makros emulieren die Funktionalität von CLASS, erfordern jedoch sorgfältige Überlegungen, um Sonderfälle wie Methoden oder globale Funktionen ohne Klassenkontext zu behandeln.

Das obige ist der detaillierte Inhalt vonGibt es ein __CLASS__-Makro für die Klassennamenextraktion in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!