Как я могу преобразовать микросекунды в миллисекунды и позволить сравнить метки времени вычитанием? Пример:
int t1 = (int)timeGetTime();
int t2 = (int)timeGetTime()+40;
// now t1 - t2 < 0 which means that t1 < t2.
Эта логика не будет работать при делении временных стоимостей на 1 000, для преобразования микросекунд в миллисекунды.
Править
Я предполагаю, что единственное решение состоит в том, чтобы сохранить все метки времени в микросекундах. Преобразование в миллисекунды может только быть сделано после вычитания к значениям дельты.
Разрешение таймеров часов в Windows ограничено примерно 10 миллисекундами, поэтому вы никогда не сможете получить значения времени с точностью до микросекунд.
Если ваши значения времени поступают из другого источника, способного обеспечить такое разрешение, то принимайте значения в микросекундах. Умножение на 1000 или деление int на 1000 не даст вам лучшего разрешения, это просто изменит масштаб вашего сравнения.
Вам нужно будет использовать таймер с высоким разрешением, чтобы получить время с точностью до микросекунд.
Вы можете использовать Windows API, чтобы проверить, насколько вы можете сделать это детально.
QueryPerformanceFrequency (& ticksPerSecond); QueryPerformanceCounter (& tick);
Эти две функции помогут вам в этом. Взгляните на статьи MSDN , чтобы узнать больше. :)
Почему бы не умножить значения миллисекунд на 1000, чтобы сравнивать в микросекундах? Или же вместо этого использовать числа с плавающей запятой.