gpt4 book ai didi

c - 在函数内声明 struct timeval time

转载 作者:太空宇宙 更新时间:2023-11-04 08:34:41 25 4
gpt4 key购买 nike

我搜索了一些问题 using time.h获得random种子 initialization .特别是在我的例子中,我想放置 time在主函数之外。

根据评论我做了一些修改。在 include as 和 中包含两次后,这些错误和警告消失了:

too few arguments to function ‘random’
implicit declaration of function ‘srandom’ [-Wimplicit-function-declaration]
too few arguments to function ‘random’

一旦我将代码声明为:

#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdint.h>
#include <unistd.h>
#include <math.h>
int main(void)
{
struct timeval time;
...
}

它可以工作,但是它必须移到 main 之外。但如果我改为:

#include <sys/time.h>
struct timeval time;
int main(void)
{
...
}

它给我错误:

‘time’ redeclared as different kind of symbol

在我的例子中,我正在处理的实现是在 C 中而不是在 C++ 中.当我尝试将代码移动到一个函数以便在每次调用我的函数时接收不同的随机数时,会发生一些其他错误:

double myRandom(double dAverage,double dStddev);

double myRandom(double dAverage,double dStddev){
int iRandom1, iRandom2;
double dRandom1, dRandom2,result;
long int liSampleSize;

iRandom1=(random());
dRandom1=(double)iRandom1 /2147483647;
iRandom2=(random());
dRandom2=(double)iRandom2 /2147483647;
result= dAverage + dStddev * sqrt(-2.0 * log(dRandom1))*cos(6.28318531 * dRandom2);

return(result);
}

int main(void){
...
struct timeval time;
gettimeofday(&time, NULL);
srandom((unsigned int) time.tv_usec);

for (i=0; i<liSampleSize;i++)
{ result=myRandom(dAverage,dStddev);
}
}

显然是它 should be working .有人知道这里出了什么问题吗?非常感谢所有评论。

更新:然后,从 myRandom 中取出 srandom 使生成的值符合预期。所以,它成功了!

最佳答案

第一个错误与time.h 有关。包含它会将一些名为 time 的实例引入您的全局命名空间。

第二个很可能是因为您没有包含 stdlib.h

关于c - 在函数内声明 struct timeval time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26775456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com