为何cppreference无random()函数,Linux man 3 random却存在该标准库函数?
为什么cppreference没收录C语言的random()函数?
这个问题得从C标准和POSIX标准的区别说起:
random()并不是ISO C标准规定的函数,它属于POSIX标准(比如Single UNIX Specification)的扩展功能。虽然它的声明放在标准库头文件<stdlib.h>里,但这是POSIX系统为了使用方便才这么安排的,本质上它不属于C语言的核心标准范畴。- cppreference的核心定位是收录ISO C标准(包括C90、C99、C11等各版本)规定的通用内容,对于平台特定的扩展,只会选择性收录那些被广泛支持、接近标准的功能。而
random()是严格绑定POSIX系统的,像Windows这类非POSIX平台就没有实现这个函数,不具备C标准层面的通用性,所以cppreference没有将其纳入C语言的主文档中。 - 反观
rand(),它是ISO C标准明确要求所有符合标准的编译器必须实现的随机数函数,所以cppreference肯定会收录它。
内容的提问来源于stack exchange,提问作者Rick
相关产品推荐
相关产品推荐

