Heim >Backend-Entwicklung >C++ >Wie wähle ich zwischen „__func__', „__FUNCTION__' und „__PRETTY_FUNCTION__' für den Zugriff auf Funktionsnamen in C und C?

Wie wähle ich zwischen „__func__', „__FUNCTION__' und „__PRETTY_FUNCTION__' für den Zugriff auf Funktionsnamen in C und C?

Susan Sarandon
Susan SarandonOriginal
2024-12-13 15:35:11851Durchsuche

How to Choose Between `__func__`, `__FUNCTION__`, and `__PRETTY_FUNCTION__` for Accessing Function Names in C and C  ?

Funktionsnamen-Makros in C und C

In C und C stehen mehrere Makros zur Verfügung, um auf den Namen der aktuellen Funktion zuzugreifen. Zu diesen Makros gehören __func__, __FUNCTION__ und __PRETTY_FUNCTION__.

func

Definiert in C99 und übernommen in C 11, func ist eine implizit deklarierte Zeichen-Array-Variable, die Folgendes enthält: der Name der einschließenden Funktion. Es handelt sich um eine einfache und leichte Option, die den schlichten Funktionsnamen bereitstellt.

FUNCTION

FUNCTION ist ein Vorstandard Erweiterung, die von bestimmten Compilern unterstützt wird. Sein Verhalten ähnelt func__, ist jedoch nicht Teil der offiziellen Sprachstandards. Aus Portabilitätsgründen ist es vorzuziehen, __func zu verwenden, sofern verfügbar.

PRETTY_FUNCTION

PRETTY_FUNCTION ist ein GCC- spezifische Erweiterung, die den „schönen“ Namen der Funktion einschließlich ihrer Signatur bereitstellt. Im Gegensatz zu seinen Vorgängern ist es in C vor allem nützlich, um den vollständigen Funktionsprototyp mit Argumenttypen zu erhalten.

Dokumentation

func ist im C99 dokumentiert Norm, Abschnitt 6.4.2.2/1. FUNCTION ist nicht offiziell dokumentiert, ist aber normalerweise in der Compiler-spezifischen Dokumentation enthalten. PRETTY_FUNCTION ist auf der GCC-Dokumentationsseite „Funktionsnamen als Zeichenfolgen“ dokumentiert.

Wann jedes Makro verwendet werden soll

Die Wahl des Makros hängt davon ab spezifische Anforderungen:

  • Einfacher Funktionsname: func oder FUNCTION ist ausreichend.
  • Komplexer Funktionsname mit Signatur (nur C): PRETTY_FUNCTION
  • Vor C99 oder Nicht-C 11 Kompatibilität: FUNCTION (sofern vom Compiler unterstützt)
  • Maximale Portabilität: func

Das obige ist der detaillierte Inhalt vonWie wähle ich zwischen „__func__', „__FUNCTION__' und „__PRETTY_FUNCTION__' für den Zugriff auf Funktionsnamen in C und C?. 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