我正在写一个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;
谢谢
rand()
它是C99标准的很大一部分,您只需要确保包含正确的头文件即可。
#include <stdlib.h>
int main(void) {
return rand() % 10;
}
该stdlib.h
头文件被覆盖在7.20
C99标准的,并且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] 删除。
我来说两句