c++ - rand_r 不在范围内,gcc mingw 在 Windows 上的 cygwin 下

标签 c++ windows gcc cygwin

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

最佳答案

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

一种选择是通过封装对rand 的调用来自己实现rand_r。这可能是理想的,也可能不是理想的,并且正如手册所述,rand_r 无论如何都是一个相当弱的伪随机数生成器。

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

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

关于c++ - rand_r 不在范围内,gcc mingw 在 Windows 上的 cygwin 下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18454814/

相关文章:

c++ - 编译大型头文件 C++

gcc - 将Intel风格的汇编代码重写为GCC内联汇编

c++ - 编译器计算错误

c++ - 如何为 QCombobox 使用模型

c++ - 将字符数组初始化为C++中的NULL

c++ - C 风格字符串差异 : C/C++

windows - 在 Windows 8 上安装 AppFabric

javascript - 如何使用 JavaScript 打开多个独立的浏览器窗口?

windows - 尝试通过 Pcap.net 连接到某人时如何防止 Windows 发送 RST 数据包?

c - mulcross数据生成器运行错误: free():invalid next size