【问题标题】:error: expected delcaration specifiers or '...' before 'time' [C]错误:“时间”之前的预期声明说明符或“...” [C]
【发布时间】:2013-11-19 16:53:02
【问题描述】:

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

错误:预期的声明说明符或“时间”之前的“...”

这是文件中的代码:

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

我不明白为什么我会收到此错误。我在 Ubuntu 12.04 中使用 gcc 进行编译。

【问题讨论】:

  • 文件范围内不能有非声明语句。
  • 啊是的。我通过将 srand 移动到差异以下来修复它。谢谢,很容易的效果

标签: c ubuntu gcc time


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您不能调用主函数范围之外的函数,而且,在函数 random_number 中使用它之前播种随机是没有意义的

    您需要将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);
    }
    

    【讨论】:

      猜你喜欢
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 2011-09-04
      • 2014-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多