ページ 11

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

Posted: 2016年10月10日(月) 05:34
by YOU TEK
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;
}

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

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

コード:

int sleep(unsigned long x)
        usleep(5);
sleep関数(自作)を使いたいのか、
usleep関数を使いたいのかよくわかりません。
どっちですか?

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

Posted: 2016年10月13日(木) 03:08
by YOU TEK
conflicting types for sleep と表示されるのは実行時です。
私が使おうとしているのはsleep関数(自作)になります。

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

Posted: 2016年10月13日(木) 03:12
by YOU TEK

コード:

#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;
}
手直ししてみましたが、同じように実行できませんでした。
よろしくお願い致します。

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

Posted: 2016年10月13日(木) 07:52
by みけCAT
他の名前(例えばmy_sleep)の関数ではなく、sleep関数を使う必要はありますか?