__FILE__, __LINE__ und was ist mit __FUNC__ ?
-
Hallo Leute,
gibt's in c++ die Möglichkeit mit cout bzw. mit printf die Funktionsname auszugeben? z.B. sowas:
int Func () { printf("Meine Funktion ist: %s\n", __FUNC__); return 0; }
Danke.
-
Man könnte doch einfach antworten:
__FUNCTION__

Aber Danke!
-
shuriko schrieb:
Man könnte doch einfach antworten:
__FUNCTION__

Aber Danke!
wir wollen dich aber zum selbstständigen arbeiten und denken animieren.

du weißt schon, dass das compiler-spezifisch ist?
(der MS compiler hats auf jeden fall -> http://msdn2.microsoft.com/en-us/library/b0084kay(VS.80).aspx)
d.h. dein ganzer debugging code kann futsch sein wenn du den compiler wechselst...
-
Xantus schrieb:
wir wollen dich aber zum selbstständigen arbeiten und denken animieren.

Tja, nächstes Mal werde ich erst mal goo.. suchen!

-
shuriko schrieb:
gibt's in c++ die Möglichkeit mit cout bzw. mit printf die Funktionsname auszugeben?
Nein, gibt es nicht. Falls dein Compiler ebenfalls den C99 Standard unterstützt, gibt es __func__. Falls nicht, bleiben dir nichts anderes als compilerspezifische Makros übrig.
-
groovemaster schrieb:
shuriko schrieb:
gibt's in c++ die Möglichkeit mit cout bzw. mit printf die Funktionsname auszugeben?
Nein, gibt es nicht. Falls dein Compiler ebenfalls den C99 Standard unterstützt, gibt es __func__. Falls nicht, bleiben dir nichts anderes als compilerspezifische Makros übrig.
Du willst damit sagen, dass es nur Compiler abhängig und nicht c++ selbst ist? Wenn nicht, dann siehe bitte oben.

-
shuriko schrieb:
groovemaster schrieb:
shuriko schrieb:
gibt's in c++ die Möglichkeit mit cout bzw. mit printf die Funktionsname auszugeben?
Nein, gibt es nicht. Falls dein Compiler ebenfalls den C99 Standard unterstützt, gibt es __func__. Falls nicht, bleiben dir nichts anderes als compilerspezifische Makros übrig.
Du willst damit sagen, dass es nur Compiler abhängig und nicht c++ selbst ist? Wenn nicht, dann siehe bitte oben.

zum dritten mal - JA, es ist compilerspezifisch. in C99 (nicht c++!) ist __func__ im Sprachstandard enthalten, aber __FUNCTION__ kann je nach compiler vorhanden sein oder nicht - oder ein compiler kann z.b.__FUNC__ anbieten, also irgendein anderes macro. die sind aber alle nicht im standard definiert.
solche infos kannst du aus den jeweiligen Dokumentationen entnehmen.
der MS compiler hat __FUNCTION__ dabei, weshalb du es wohl verwenden kannst. wenn es weitere unterstützen - gut. wenn nicht, musst du auf so einen krams auch noch achten beim eventuellen portieren.
-
shuriko schrieb:
Du willst damit sagen, dass es nur Compiler abhängig und nicht c++ selbst ist?
Korrekt.

-
Am einfachsten ist es wohl
BOOST_CURRENT_FUNCTIONausboost/current_function.hppzu nehmen.__func__wird aber Teil von C++0x.