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

时间:2012-06-19 09:32:09

标签: c++ c windows winapi

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( "%ld\n", li );

2 个答案:

答案 0 :(得分:5)

按照链接链接的示例:

LARGE_INTEGER li;
li.QuadPart = -3050000000LL;  

“LL”使它长得很长;没有它,它只是一个int (你可以使用小写“l”,但它们与许多字体中的“1”(一)非常相似。)

答案 1 :(得分:4)

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