4

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

4

1 回答 1

4

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

一种选择是rand_r通过包装对rand. 这可能是可取的,也可能不是可取的,并且正如手册所述,rand_r无论如何它是一个相当弱的伪随机数生成器。

既然您正在使用 C++,为什么不看看可用的新随机数库。它们是线程安全的、可移植的,并且产生更好的随机结果。这个问题虽然不是一个真正的问题,但仍然包含一些有关如何使用该库的有用信息。

如果你没有可用的 C++11 随机类,Boost 还有一个implementation

于 2013-08-27T04:41:06.450 回答