Wie kann ich den Bezeichner der aktuellen Funktion erhalten?

8

In C / C ++ haben wir das Makro __FUNCTION__ , das durch einen String ersetzt wird, der den Namen der aktuellen Funktion enthält. Was aber, wenn ich die Kennung der Funktion haben möchte? Das heißt, keine Zeichenfolge, aber etwas, das ich als Token verwenden könnte, um andere Bezeichner zu erstellen, z. B. wenn wir

haben %Vor%

sollte drucken

%Vor%

Hinweise:

  • Ich bin nur an der Vorverarbeitungszeit interessiert.
  • Ich möchte meine Funktionsdefinitionen nicht durch einen Präprozessor-Aufruf ersetzen - obwohl ich weiß, dass das wahrscheinlich funktionieren würde.
einpoklum 11.03.2014, 08:45
quelle

2 Antworten

3

Leider kannst du nicht. Weil Sie nicht ein 1 ]

Mit anderen Worten, Sie können keine Anführungszeichen um die Zeichenfolge, die von __FUNCTION__ generiert wurde, entfernen und sie mit _bar kontaktieren.

    
deepmax 11.03.2014 09:10
quelle
2

Wenn es die von Ihnen gewünschte Kompilierungszeit ist, und in einem einfachen Fall wie Ihrem, könnte dies mit Preprozessor-Makros und dem Verkettungsoperator ## möglich sein. Vielleicht etwas wie

%Vor%

Es ist nicht möglich, den Namen foo automatisch zu erhalten, aber er muss explizit im Makro "call" benannt werden.

    
Some programmer dude 11.03.2014 08:56
quelle

Tags und Links