SDL_GetTicksが戻した32ビットの経過時間(ミリ秒)を比較するマクロ. SDL_GetTicksの値は32ビットのミリ秒のため, 約49日で巻き戻ってしまう. このマクロはこの問題を適切に回避しているため, 49日以内の比較であれば正しく処理できる.
境界線上の問題を完全に回避するためには, 代わりにSDL_GetTicks64を使うこと. このマクロにSDL_GetTicks64が戻した値を渡してはならない.
SDL_TICKS_PASSED(A, B)
A | 最初の経過時間 |
B | 次の経過時間 |
/* 100ミリ秒待つならば, 次のようにすればよい: */
Uint32 timeout = SDL_GetTicks() + 100;
while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) {
/* ... ここで時間が経過するまでの処理を行う */
}