rand_r不在范围内,gcc mingw在windows下的cygwin下

时间:2013-08-26 23:46:52

标签: c++ windows gcc cygwin

我正在尝试将一些代码从linux移植到cygwin下的windows。我发现这个奇怪的错误,其中'rand_r未在此范围内声明'。我使用gcc 4.8.1作为x86_64-w64-mingw32,并在其搜索路径(-v选项)中查找正确的目录。正确包含头文件。我正在寻找解决这个问题的想法。是否有一些关于cygwin的事实我错过了因此有这个问题?有没有办法检查gcc是否实际上触及了所需的文件?

1 个答案:

答案 0 :(得分:3)

与标准rand_r函数相比,rand函数被认为是线程安全的。请参阅man 3 rand_r

一种选择是通过打包rand_r来实现rand。这可能是也可能不是,并且正如手册所述,rand_r无论如何都是一个相当弱的伪随机数发生器。

看到你正在使用C ++,为什么不看看可用的新random number libraries。它们是线程安全的,可移植的,并产生更好的随机结果。 This question虽然不是真正的问题,但仍然包含一些有关如何使用该库的有用信息。

如果您没有可用的C ++ 11随机类,Boost也有implementation