2008-10-29 10 views
13

Gibt es eine (standardisierte) Möglichkeit, den Namen der aktuellen Methode mit C++ abzurufen?Abrufen des Namens der aktuellen Methode in C++

Mit GNU GCC können Sie dies tun, indem Sie das Makro __FUNCTION__ und __PRETTY_FUNCTION__ (umgeben von 2 Unterstrichen) verwenden, aber das ist natürlich nicht portabel. Gibt es eine Möglichkeit, dies in Standard-C++ zu tun oder um es tragbar zu machen?

+0

Sie die Unterstreichungen mit Schrägstrichen entweichen können Abschlag verhindern, dass sie nach oben durcheinander ... – Roddy

+0

Oder durch den „Code“ klicken in der Editor, was ich getan habe, als ich es bearbeitet habe. –

+0

Ich benutze ['BOOST_CURRENT_FUNCTION'] (http://www.boost.org/doc/libs/1_36_0/libs/utility/current_function.html) – fizzer

Antwort

26

Der Bezeichner __func__ ist Teil des C99-Standards und befindet sich im C++ 0x-Entwurf.

Der Identifikator __func__ wird implizit vom Compiler erklärt, als ob die folgenden ganz am Anfang jeden Funktionskörpers waren:

static const char __func__[] = "function-name"; 

wo function-name eine Implementierung definierte Zeichenfolge wird automatisch durch den Compiler zur Verfügung gestellt.

Bis die Unterstützung für diese Standards verfügbar ist (oder häufiger verfügbar), stecken Sie mit dem Compiler-spezifischen Gunk fest.

0

Nein, es wird nicht vom C++ - Standard unterstützt.

0

Es heißt "Introspektion" und es gibt keine solche Sache in C++ Standards. Sie sollten eine externe Bibliothek verwenden (Boost, denke ich, unterstützt es irgendwie). Aber versuchen Sie herauszufinden, ob der Grund für die Verwendung wirklich gut ist.

+1

In anderen Sprachen ist es nützlich, Unit-Tests zu generieren –

Verwandte Themen