Signatur einer Funktion erfahren
-
Hallo,
gibt es eine Möglichkeit, die Signatur der Funktion, in der man sich gerade befindet, zu erfahren? Soll heissen, wenn ich
int Classftn::crf_id(int i) const { ... }habe, möchte ich in der Funktion erfahren können, dass sie als Argumente einen int braucht und dass sie einen int zurückgibt.
-
Nein. Wozu bräuchtest du das?
-
ingobulla schrieb:
... möchte ich in der Funktion erfahren können, dass sie als Argumente einen int braucht und dass sie einen int zurückgibt.
Dann musst Du selbst dafür sorgen, dass entsprechende Informationen in der Funktion für Dich bereitstehen. Wozu Du sowas brauchst?!

-
Man könnte das z.B. für den Aufbau von StackTraces nutzen. Offenbar kommt ingobulla aus der C#/Java-Ecke in der Reflection ein wunderbares Feature ist. In C++ gibt es keinerlei Möglichkeiten dieser Art. Im fertig übersetzen Programm existieren die Klassen und deren Aufbau nicht mehr.
MfG SideWinder
-
SideWinder schrieb:
Offenbar kommt ingobulla aus der C#/Java-Ecke in der Reflection ein wunderbares Feature ist.
Nein, nicht wirklich. Ich habe zwar auch mal C# und Java programmiert, allerdings nur recht wenig und schon ziemlich lange her.
Nexus schrieb:
Wozu bräuchtest du das?
Für Kontrollausgaben in Konstruktoren. Dann könnte ich, wenn der Konstruktor aufgerufen wird (und es mehr als einen gibt), eine Ausgabe machen, die mir Dateinamen, Funktionsnamen und Signatur mitteilt (um im Fehlerfall den Ablauf des Programms nachvollziehen zu können)
-
Wenn du den MSVC verwendest, dann wäre das folgende Makro dafür gedacht: __FUNCSIG__. Allerdings ist das nicht im C++ Standard, also Compiler abhängig.
Wie es auf anderen Compilern aussieht, weiss ich nicht. Aber einfach mal in den Compilerspezifikationen nachschauen. Ich bin mir eigentlich ziemlich sicher, dass die auch so etwas haben.
Grüssli