14 Stimmen

Den Namen der aktuellen Methode in C++ ermitteln

Gibt es eine (standardisierte) Möglichkeit, den Namen der aktuellen Methode mit C++ zu erhalten?

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

0 Stimmen

Sie können die Unterstriche mit Backslashes maskieren, um zu verhindern, dass Markdown sie durcheinanderbringt...

0 Stimmen

Oder indem Sie im Editor auf die Schaltfläche "Code" klicken, was ich bei der Bearbeitung getan habe.

0 Stimmen

27voto

Michael Burr Punkte 320591

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

Die Kennung __func__ wird vom Compiler implizit so deklariert, als stünde das Folgende ganz am Anfang eines jeden Funktionskörpers:

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

function-name ist eine implementierungsdefinierte Zeichenkette, die automatisch vom Compiler bereitgestellt wird.

Bis die Unterstützung für diese Standards verfügbar ist (oder weiter verbreitet wird), müssen Sie sich mit compilerspezifischem Müll herumschlagen.

1voto

Keith Nicholas Punkte 42417

No......, aber manche Dinge sind eben keine Standardnormen!

siehe http://msdn.microsoft.com/en-us/library/b0084kay(VS.80).aspx die den ANSI-Standard umreißt, und dann microsofs, das die FUNKTION

0voto

Marko Punkte 29192

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

0voto

andy.gurin Punkte 3766

Das nennt man "Introspektion", und so etwas gibt es in den C++-Standards nicht. Sie sollten eine externe Bibliothek verwenden (ich glaube, boost unterstützt das irgendwie). Aber versuchen Sie herauszufinden, ob der Grund für die Verwendung wirklich ein guter ist.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X