错误:应为delcaration说明符或'';在'之前;时间';[丙]

错误:应为delcaration说明符或'';在'之前;时间';[丙],c,ubuntu,gcc,time,C,Ubuntu,Gcc,Time,我有一个简单的函数,它给了我这个错误: 错误:“时间”之前应为delcaration说明符或“…” 以下是文件中的代码: #include <stdlib.h> #include <time.h> srand(time(NULL)); float random_number(float min, float max) { float difference = (max - min); return (((float)(difference + 1)/R

我有一个简单的函数,它给了我这个错误:

错误:“时间”之前应为delcaration说明符或“…”

以下是文件中的代码:

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

srand(time(NULL));

float random_number(float min, float max) {
    float difference = (max - min);
    return (((float)(difference + 1)/RAND_MAX) * rand() + min);
}
#包括
#包括
srand(时间(空));
浮动随机数(浮动最小值、浮动最大值){
浮动差=(最大-最小);
返回(((浮动)(差值+1)/RAND_MAX)*RAND()+min);
}

我不明白为什么我会犯这个错误。我在Ubuntu 12.04中使用gcc进行编译。

在C语言中,运行时执行的所有代码都必须在函数中。将对
srand()
的调用放在一个init函数内。

您不能在主函数作用域外调用函数,而且,在函数random\u number中使用random之前播种random也没有意义

您需要移动
srand(time(NULL))到主功能,如:

float random_number(float min, float max) {
    float difference = (max - min);
    return (((float)(difference + 1)/RAND_MAX) * rand() + min);
}

int main()
{
    srand(time(NULL));
    // your code which calls random_number here
}
另一种方法是,不要更改main,但:

static int isRandomInited = 0;
float random_number(float min, float max) {
    if (!isRandomInited) { // init random only 1 time
        srand(time(NULL));
        isRandomInited = 1;
    }
    float difference = (max - min);
    return (((float)(difference + 1)/RAND_MAX) * rand() + min);
}

文件作用域中不能有非声明语句。是。我通过移动sr和低于差来修复它。谢谢,很简单