Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 1 из 1
  1. #1
    Аватар для ziggi
    Проверенный

    Статус
    Оффлайн
    Регистрация
    14.05.2015
    Сообщений
    1,104
    Репутация:
    739 ±

    GetTickDiff - исправление проблемы переполнения для GetTickCount

    Описание:
    Функция для вычисления времени, прошедшего между двумя вызовами GetTickCount(), с учётом возможности переполнения переданных значений.

    Параметры:
    newtick - текущее значение времени
    oldtick - предыдущее значение времени

    Возвращаемое значение:
    Функция возвращает время, прошедшее между двумя переданными в неё значениями.

    Код:
    1. stock GetTickDiff(newtick, oldtick)
    2. {
    3. if (oldtick < 0 && newtick >= 0) {
    4. return newtick - oldtick;
    5. } else if (oldtick >= 0 && newtick < 0 || oldtick > newtick) {
    6. return (cellmax - oldtick + 1) - (cellmin - newtick);
    7. }
    8. return newtick - oldtick;
    9. }


    Примечания:
    • Всегда знал, что данный фикс уже существует и не испытывал надобности в его написании, но после изучения реализации, рекомендуемой в wiki, понял, что она работает не корректно. Создал Pull Request в репозитории автора этого фикса, в котором вы можете найти код теста и его результаты.

    Пример использования:
    1. main()
    2. {
    3. new tick = GetTickCount();
    4. // ...
    5. printf("ticks: %d", GetTickDiff(GetTickCount(), tick));
    6. }


    Автор: ziggi
    Последний раз редактировалось ziggi; 15.03.2018 в 20:20.

 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •