Heim >Backend-Entwicklung >C++ >Was ist der Unterschied zwischen „__PRETTY_FUNCTION__', „__FUNCTION__' und „__func__'?

Was ist der Unterschied zwischen „__PRETTY_FUNCTION__', „__FUNCTION__' und „__func__'?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-24 00:48:09345Durchsuche

What's the Difference Between `__PRETTY_FUNCTION__`, `__FUNCTION__`, and `__func__`?

Die Unterschiede verstehen: PRETTY_FUNCTION__, __FUNCTION__ und __func

Beim Programmieren kann der Zugriff auf Informationen über die aktuelle Funktion erfolgen zum Debuggen, Protokollieren und für andere Zwecke nützlich sein. Drei in C und C häufig verwendete Bezeichner dienen dieser Funktion: __PRETTY_FUNCTION__, __FUNCTION__ und __func__. Jeder hat seine eigenen einzigartigen Eigenschaften, die es wert sind, verstanden zu werden.

__func__: Ein Standardbezeichner von C99

func ist in C99 definiert und implizit deklariert Bezeichner, der zu einem Zeichenarray erweitert wird, das den Namen der Funktion enthält, in der er verwendet wird. Als deklarierter Bezeichner verhält sich func anders als ein Präprozessormakro.

__FUNCTION__: Eine Pre-Standard-Erweiterung

Weitgehend unterstützt von C-Compilern wie gcc und Visual C ist FUNCTION nicht unbedingt Teil des C-Standards. Es verhält sich normalerweise ähnlich wie __func__, es können jedoch einige Inkonsistenzen zwischen Compilern bestehen.

__PRETTY_FUNCTION__: Eine GCC-Erweiterung

PRETTY_FUNCTION ist eine GCC-spezifische Erweiterung Erweiterung, die mit __FUNCTION__ vergleichbar ist. Bei C-Funktionen wird jedoch der „hübsche“ Name zurückgegeben, der die Signatur der Funktion enthält.

Auswahl des richtigen Bezeichners

Die Auswahl des zu verwendenden Bezeichners hängt in erster Linie davon ab Support- und Funktionsanforderungen:

  • Wenn die Einhaltung des Standards C99 erforderlich ist, verwenden Sie __func__.
  • Wenn Sie eine portablere Option mit einem ähnlichen Verhalten wie __func__ benötigen, sollten Sie die Verwendung von __FUNCTION__ in Betracht ziehen.
  • Wenn Ihr Code speziell für gcc entwickelt wurde und Sie den „hübschen“ Funktionsnamen wünschen, verwenden Sie ihn __PRETTY_FUNCTION__.

Es ist auch wichtig, die spezifische Compiler-Dokumentation zu konsultieren nicht standardmäßige Erweiterungen wie FUNCTION und __PRETTY_FUNCTION__. Visual C bietet beispielsweise ähnliche Erweiterungen wie __FUNCSIG__.

Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen „__PRETTY_FUNCTION__', „__FUNCTION__' und „__func__'?. 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