如何使用rand-C99版本

用户1911

我正在写一个C程序,我想这样使用for

for(int i=0 ; i < something ; i++ )

所以我需要使用C99版本来初始化“()”中for计数器,但是C99版本不能与rand()函数一起使用。

实际上,在手册页上rand()提到:“该功能不是C99的一部分,而是POSIX的一部分”

为了避免在for..之前初始化计数器的任何想法

//更新

编译的输出是:

warning: implicit declaration of function ‘rand_r’ [-Wimplicit-function-declaration]

代码 :

array[i] = rand_r(&seed) % MAX + MIN;
  • > array [i]类型为char *(我已经为其动态分配了空间)

谢谢

紫罗兰色

rand()它是C99标准的很大一部分,您只需要确保包含正确的头文件即可。

#include <stdlib.h>
int main(void) {
    return rand() % 10;
}

stdlib.h头文件被覆盖在7.20C99标准的,并且rand()是覆盖在7.20.2


如果您的手册页指出它不属于C99,则不正确。我的(在Debian Jessie领导下)明确指出:

函数rand()和srand()符合SVr4、4.3BSD,C89,C99和POSIX.1-2001。

但是,当然,标准本身就是控制文件。


可能误读了手册页,或者写手册页的人可能会感到困惑。random()srandom()功能都没有C99(他们POSIX)的一部分,但rand()srand() 肯定是。

或者,您可能正在使用可rand_r重入版本。POSIX也不是C99。

如果要gcc在C99模式下使用以获取for (int i = 0...功能,但希望能够调用非C99函数,请使用-std=gnu99而不是进行编译-std=c99

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档