2013/02/15

C言語 Sleep関数 windows.h

ANSI C89 の範囲から外れてしまうが、音をリアルタイムに扱ったり、ゲームのちょっとした時間調整用に Sleep関数 を使ってみる。 UNIX、Linux では標準的に sleep関数 を使うのだが、Windows 上では使えないことが判明。代替として <windows.h> にある Sleep関数 を使う必要がある。注意点は単位の違い。標準は sleep(sec) だが、Windows は Sleep(msec) となっている。

windows.h Sleep を使って一時停止

#include <stdio.h>
/* Win32 API Sleep(msec)を使うために必要 */
#include <windows.h>
/* 標準sleep(sec)をWinのSleep(msec)に置き換え */
#define sleep(n) Sleep(n * 1000)

int main(void){
  int i;
  for(i=5; i>=0; i--){
    printf("%d\n",i);
    sleep(1);
  }
  return 0;
}
実行すると、5から1秒ごとにカウントダウンして、0になったら終了する。
5
4
3
2
1
0

C言語 ANSI C89 Meadow & MinGW GCC 目次