sleep関数をMacで使うにはどうしたら良いのですか?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
YOU TEK

sleep関数をMacで使うにはどうしたら良いのですか?

#1

投稿記事 by YOU TEK » 7年前

C言語初心者です。
現在本を読みながら勉強をしています。
4桁の数値を記憶するゲームを作っている際に、本によるとsleep関数を使うのですが、
"conflicting types for sleep" と表示され実行できません。

ご教授いただけると幸いです。
よろしくお願い致します。

コード:

#include <time.h>
#include <stdio.h>
#include <stdlib.h> 

#define MAX_STAGE 10

int sleep(unsigned long x)
{
    clock_t c1 = clock(), c2;
    
    do {
        if ((c2 = clock()) == (clock_t)-1)
            return 0;
    } while (1000.0 * (c2 - c1) / CLOCKS_PER_SEC < x);
    return (1);
}


int main()
{
    int stage;
    int success = 0;
    clock_t start, end;
    
    srand(time(NULL));
    
    printf("4桁の数値を記憶しましょう。\n");
    
    start = clock();
    for (stage = 0; stage < MAX_STAGE; stage++) {
        int x;
        int no = rand() % 9000 + 1000;
        
        printf("%d", no);
        fflush(stdout);
        usleep(5);
        
        printf("\r入力せよ :");
        scanf("%d", &x);
        
        if (x != no)
            printf("\a間違いです。\n");
        else {
            printf("正解です。\n");
            success++;
        }
    }
    end = clock();
    
    printf("%d回中%d回成功しました。\n", MAX_STAGE, success);
    printf("%0.1f秒でした。\n", (double)(end - start) / CLOCKS_PER_SEC);
    
    return 0;
}

box
記事: 2002
登録日時: 13年前

Re: sleep関数をMacで使うにはどうしたら良いのですか?

#2

投稿記事 by box » 7年前

YOU TEK さんが書きました: "conflicting types for sleep" と表示され
このメッセージが出るのはビルド時ですか?実行時ですか?
処理系にすでに備わっている(と思われる)sleep関数とバッティングしていないでしょうか。
YOU TEK さんが書きました:

コード:

int sleep(unsigned long x)
        usleep(5);
sleep関数(自作)を使いたいのか、
usleep関数を使いたいのかよくわかりません。
どっちですか?
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

YOU TEK

Re: sleep関数をMacで使うにはどうしたら良いのですか?

#3

投稿記事 by YOU TEK » 7年前

conflicting types for sleep と表示されるのは実行時です。
私が使おうとしているのはsleep関数(自作)になります。

YOU TEK

Re: sleep関数をMacで使うにはどうしたら良いのですか?

#4

投稿記事 by YOU TEK » 7年前

コード:

#include <time.h>
#include <stdio.h>
#include <stdlib.h> 
 
#define MAX_STAGE 10
 
int sleep(unsigned long x)
{
    clock_t c1 = clock(), c2;
    
    do {
        if ((c2 = clock()) == (clock_t)-1)
            return 0;
    } while (1000.0 * (c2 - c1) / CLOCKS_PER_SEC < x);
    return (1);
}
 
 
int main()
{
    int stage;
    int success = 0;
    clock_t start, end;
    
    srand(time(NULL));
    
    printf("4桁の数値を記憶しましょう。\n");
    
    start = clock();
    for (stage = 0; stage < MAX_STAGE; stage++) {
        int x;
        int no = rand() % 9000 + 1000;
        
        printf("%d", no);
        fflush(stdout);
        sleep(500);
        
        printf("\r入力せよ :");
        scanf("%d", &x);
        
        if (x != no)
            printf("\a間違いです。\n");
        else {
            printf("正解です。\n");
            success++;
        }
    }
    end = clock();
    
    printf("%d回中%d回成功しました。\n", MAX_STAGE, success);
    printf("%0.1f秒でした。\n", (double)(end - start) / CLOCKS_PER_SEC);
    
    return 0;
}
手直ししてみましたが、同じように実行できませんでした。
よろしくお願い致します。

アバター
みけCAT
記事: 6734
登録日時: 13年前
住所: 千葉県
連絡を取る:

Re: sleep関数をMacで使うにはどうしたら良いのですか?

#5

投稿記事 by みけCAT » 7年前

他の名前(例えばmy_sleep)の関数ではなく、sleep関数を使う必要はありますか?
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

閉鎖

“C言語何でも質問掲示板” へ戻る