Ich habe eine kurze Frage. Es ist ziemlich einfach, aber ich bin sehr verwirrt. Ich erstelle einen Timer in C mit dem Terminal. Ich verwende SIGALRM, um Signale zu senden, die den Wert von SUBTRACT_CONST subtrahieren. Ich nehme an, dass es 25 TICKS_PER_SECOND oder 1/25 gibt, was 0.0400 meiner Subtraktionskonstante ist. Ich habe den Signalhandler und den Timer installiert, um alle 40000us in der itimer-Struktur gesetzt zu setzen. In einer meiner Funktionen kann ich jedoch nicht "fangen", wenn die Zeit Null wird. Wenn dieser TICK_PER_SECOND-Wert 32 oder 16 ist, funktioniert es wie erwartet. Mein Vergleich scheint diese unterschiedlichen Tick-Zeiten nicht zu erfassen. Meine Zeitvariable, die diesen Wert enthält, von dem subtrahiert wird, ist ein Double.Überprüfen, wenn ein Doppel ein Null ist
if(TIME == 0) //my very simple comparison
Ich habe das schon ausprobiert. Mein Timer zählt rückwärts in negative Zeit. Sobald es kleiner als 0 wird, würde diese Bedingung immer erfüllt sein. –
Verwenden Sie einfach ein 'int', Countdown von 25 in Schritten von 1. – harold
Sie müssen nur die richtige Bedingung verwenden, Sie können nur einen genauen Vergleich nicht verwenden. Zum Beispiel "if (TIME <0.00001) ..." oder so ähnlich. Oder tu was @harold gesagt hat und löse dein Problem in ganzen Zahlen. – lurker