zur laufzeit methodennamen bestimmen
-
sowas wäre aber gar nich so übel.. wenn es funktionierne würdE:)
-
BorisDieKlinge schrieb:
sowas wäre aber gar nich so übel.. wenn es funktionierne würdE:)
msvc z.b. hat dafür ein vordefiniertes makro: __FUNCTION__
-
Müsst bei gcc auch funktionieren. Alternativ: __PRETTY_FUNCTION__.
-
Die arbeiten aber vermutlich nicht (wie vom OP gewünscht), zur Laufzeit, oder ?
Gruß,
Simon2.
-
Nö, aber so wie er es verwenden will sollte es ausreichen oder?
-
David_pb schrieb:
Nö, aber so wie er es verwenden will sollte es ausreichen oder?
Weiß ich nicht - ich habe so etwsa nicht gebraucht. Er hat halt nur nach "Laufzeit" gefragt und ich wollte nur auf den Unterschied hinweisen.
Gruß,
Simon2.
-
Für Debugging Zwecke ist sowas sehr praktisch so kann man seine Log-Einträge direkt mit dem zugehörigen Funktionsnamen versehen.
-
wirklich zur laufzeit wäre natürlich noch besser, aber für die debugging zwecke is __PRETTY_FUNCION__ auch ausreichend. erspart eine menge copy paste arbeit und vor allem die fehler anfälligkeit der log statements wird auch reduziert wenn ich es nicht immer selber runterkopieren muss - thx
-
ein funktionsname aendert sich nach dem compilieren nicht, wozu sollte man also zur laufzeit sowas evaluieren? es wuerde keinen unterschied zu __function__ liefern.
-
Die C++ Funktionen (in Klasse bsw.) klingt dann aber immer so komisch.
-
rapso schrieb:
ein funktionsname aendert sich nach dem compilieren nicht, wozu sollte man also zur laufzeit sowas evaluieren? es wuerde keinen unterschied zu __function__ liefern.
Ja - was weiß denn ich ?
Gefragt war "zur Laufzeit", geantwortet wurde "Per Makro", Hinweis von mir "ist allerdings nicht zur Laufzeit", Hinweis vom OP "reicht mir" - fertig.Gruß,
Simon2.
-
Mit einem Makro kannst du das ganze übrigens abkürzen:
#define LOG(text) LOGGER.log("In function " __FUNCTION__ ":" text);
ggf. musst du die genaue Zusammensetzung des endgültigen Strings etwas anpassen, je nachdem ob du nur konstante Strings benutzt oder auch noch Werte mit einbaust.
-
Am einfachsten wäre, man würde eine ausgereifte LOG-Library benutzen.