我的未定义引用已定义

时间:2012-05-04 10:29:30

标签: c undefined-reference

当我尝试编译它时,它说“testrand.c :(。text + 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等...但仍然不知道发生了什么。有谁知道发生了什么?

2 个答案:

答案 0 :(得分:3)

这是因为您的rand_number函数是在其他函数main中定义的。

这可以解决您的问题:

#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;
}

答案 1 :(得分:1)

您已在rand_number内定义了main,但不允许这样做。

在第13行放置}以关闭main()。并从第22行删除}