Umleitung Systemfunktion, Rekursion verhindern



  • Hi,

    ich stehe gerade auf meiner eigenen Leitung. 😉
    Wenn ich z.B. sleep umleite auf eine eigene Funktion, z.B. my_sleep() sag ich an zentraler Stelle

    #define sleep(x) my_sleep(x)

    und definiere dann wiederum

    void my_sleep(int x)
    {
    //mein Code
    sleep(x); //Aufruf der originalen Systemfunktion
    }

    Wie verhindere ich, daß my_sleep in einer rekursiven Endlosschleife aufgerufen wird?

    Grüße,
    Mac



  • ?

    #define Sleep(x) my_sleep(x)
    


  • Glaube, er sucht #undef



  • Ja, #undef - das war's. Vielen Dank!

    Mac



  • MacCPlus schrieb:

    Hi,

    ich stehe gerade auf meiner eigenen Leitung. 😉
    Wenn ich z.B. sleep umleite auf eine eigene Funktion, z.B. my_sleep() sag ich an zentraler Stelle

    #define sleep(x) my_sleep(x)

    und definiere dann wiederum

    void my_sleep(int x)
    {
    //mein Code
    sleep(x); //Aufruf der originalen Systemfunktion
    }

    Wie verhindere ich, daß my_sleep in einer rekursiven Endlosschleife aufgerufen wird?

    Grüße,
    Mac

    Einfach zuerst my_sleep definieren, danach erst

    #define sleep(x) my_sleep(x)
    

  • Mod

    Ein einfaches Leerzeichen tut es auch.
    Natürlich sollte sleep dann nicht als Objektmakro definiert werden.

    void my_sleep(int x)
    {
    //mein Code
    sleep (x); //Aufruf der originalen Systemfunktion
    //   ^ whitespace
    }
    

Anmelden zum Antworten