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,
MacEinfach zuerst my_sleep definieren, danach erst
#define sleep(x) my_sleep(x)
-
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 }