Forum: PC-Programmierung __FUNCTION__ Makro


von Philip (Gast)


Lesenswert?

Hallo,

wenn ich mit Qt/Mingw unter Windows in einer Methode ein cout << 
_FUNCTION_; mache, wird nur der Methodenname ausgegeben. Mache ich das 
gleiche unter Visual Studio, wird der Klassenname mit ausgegeben. Das 
hätte ich unter Qt auch gern so. Weiß jemand ob sich das ändern lässt 
und wenn ja, wie?

Gruß Philip

von g457 (Gast)


Lesenswert?

> cout << _FUNCTION_; mache, wird nur der Methodenname ausgegeben

So solls sein.

> unter Visual Studio, wird der Klassenname mit ausgegeben

Das ist microsoft-specific.

> und wenn ja, wie?

versuchs mal mit
1
__PRETTY_FUNCTION__

von Rolf M. (rmagnus)


Lesenswert?

Wenn eh Qt eingesetzt wird, kannst du auch mal Q_FUNC_INFO probieren.
Siehe http://doc.qt.digia.com/qt/qtglobal.html#Q_FUNC_INFO

von Philip (Gast)


Lesenswert?

Ok, die Möglichkeiten sind beide etwas geschwätziger :-) als ich es mir 
vorstelle, entsprechen aber schon ehr dem was ich will. Danke!

von pks (Gast)


Lesenswert?

Gibt es eigentlich auch die Möglichkeit innerhalb einer Memberfunktion 
an den Namen einer Klasse zu kommen?

von Rainbow_Dash (Gast)


Lesenswert?

typeid(*this).name()

Das ist in Gegensatz zu dem Makro-Müll sehr viel sauberer und sogar 
recht portabel.

von pks (Gast)


Lesenswert?

Rainbow_Dash schrieb:
> typeid(*this).name()
>
> Das ist in Gegensatz zu dem Makro-Müll sehr viel sauberer und sogar
> recht portabel.

Aber für den Funktionsnamen brauch ich schon den "Makro-Müll", oder?

von Schalalawäntzchen (Gast)


Lesenswert?

Wofür brauchst du das eigentlich, wenn man fragen darf? :)

von pks (Gast)


Lesenswert?

Für Debug/Fehler-Ausgaben. Wenn ich z.B. eine Exception werfe, möchte 
ich ihr die Information mitgeben, wo sie her kommt.

von oja (Gast)


Lesenswert?

gdb kennst du?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.