2012-05-04 22 views
1

私はこれをコンパイルしようと定義され、それが言う「testrand.c :(テキスト+ 0x11を): `rand_number」への未定義参照」私の未定義の参照が

1 #include <stdio.h> 
2 #include <time.h> 
3 
4 int rand_number(int param); 
5 
6 main() 
7 { 
8 while(5) 
9 { 
10   printf("%d", rand_number(15)); 
11   sleep(1); 
12 }  
13 
14 
15 int rand_number(int param) 
16 { 
17 srand((unsigned int)time(NULL)); 
18  int x = param; 
19  int rn = rand() % x; 
20   return rn; 
21 }  
22 } 

をしかし、私は明確に定義されてきましたその上に...

私は、time.hをstdlib.hなどの引用符で含めようとしましたが、何が起こっているのかまだ分かりません。誰でも何が起こっているのか知っていますか?

+0

あなたがメイン – tpbowden

+0

コール 'srand関数(内部でfuncitonを定義するべきではありません)' **一度だけ**、通常はメインの 'の最初のものの一つとして、 () 'を返します。それを複数回呼び出すと、生成された数値の(擬似)ランダム性が効果的に減少します(ランダム化されません)。 – pmg

答えて

3

から}を削除します。

これはあなたの問題を解決する必要があります

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

int rand_number(int param); 

main() 
{ 
    while(5) 
    { 
     printf("%d", rand_number(15)); 
     sleep(1); 
    } 
} 

int rand_number(int param) 
{ 
    srand((unsigned int)time(NULL)); 
    int x = param; 
    int rn = rand() % x; 
    return rn; 
} 
+0

うわー、私はそれのようなものに乗ったと信じることはできません。 XDありがとう! – Chunmeista

1

rand_numbermainの中に定義しましたが、これは許可されていません。

はあなたrand_number機能は他の機能、main内で定義されているため、これが起こったライン13上}を置くことによって)(メインを閉じても、ライン22