Неопределенное поведение с использованием gettimeofday

#include <iostream>
#include <sys/time.h>

static long elapsedTime(struct timeval &then)
{
struct timeval when;
gettimeofday(&when, NULL);
long result = (when.tv_sec - then.tv_sec) * 1000;
result += (when.tv_usec - then.tv_usec) / 1000;
then = when;
return (result > 0) ? result : 0;
}

int main()
{
struct timeval now;
gettimeofday(&now, NULL);

long elapsed, everyMinute = 0;
while (true) {
elapsed = elapsedTime(now);
everyMinute += elapsed;

if (everyMinute % 1000 == 0)
std::cout << "After: " << everyMinute << std::endl;
}
return 0;
}

Я пытаюсь заставить эту петлю печатать каждую минуту, но gettimeofday дает мне неожиданное поведение. Например, эта строка std::cout << "Before: " << everyMinute << std::endl; будет вызывать, если работать, но без него я просто получаю нули: вот отрывок но лучше подключить свой собственный компилятор.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]