为 SetWaitableTimer 设置相对时间时的算术溢出

Arithmetic overflow when setting relative time for SetWaitableTimer

本文关键字:溢出 时间 SetWaitableTimer 设置 相对      更新时间:2023-10-16

http://msdn.microsoft.com/en-us/library/windows/desktop/ms686289%28v=vs.85%29.aspx

我希望计时器从当前时间开始发出 5 分 5 秒的信号,但是当我将 LARGE_INTEGER 的 QuadPart 设置为 -3050000000 时,变量溢出,当我打印出来时,它显示为1244967296。我应该怎么做才能让它从当前时间发出 5 分 5 秒(或更长时间)的信号?

LARGE_INTEGER li;
li.QuadPart = -3050000000;
printf( "%ldn", li );

按照您的链接链接到的示例:

LARGE_INTEGER li;
li.QuadPart = -3050000000LL;  

"LL"使它成为一个长长的文字;没有它,它只是一个int
您可以使用小写的"l",但它们在许多字体中与"1"(一)非常相似。

LARGE_INTEGER alarm_after;  
alarm_after.QuadPart =  -1 * (seconds * 10000000LL);
printf("Quadpart=%I64xn", alarm_after.Quadpart);