__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_FUNCTION aus boost/current_function.hpp zu nehmen.

    __func__ wird aber Teil von C++0x.


Anmelden zum Antworten