为什么rand_r没有在std中定义?

时间:2013-11-29 13:13:34

标签: c++ random std

我想知道为什么在包含std::rand_r时我无法使用cstdlib?或者,更一般地说,为什么cstdlib中的某些函数在全局命名空间中而不在std命名空间中?

1 个答案:

答案 0 :(得分:6)

rand_r不是标准的一部分,它是一种POSIX方法。

rand_r(): _POSIX_C_SOURCE >= 1 || _XOPEN_SOURCE || _POSIX_SOURCE 
     

符合

     

函数rand()srand()符合SVr4,4.3BSD, C89,C99 ,POSIX.1-2001。功能 rand_r()来自POSIX.1-2001 POSIX.1-2008将rand_r()标记为已废弃。

更好的是,忘记randrand_r并使用正确发布的std::mt19937(请参阅<random>)。