rand_r不在作用域中,gcc-mingw在windows上的cygwin下

rand_r not in scope, gcc mingw under cygwin on windows

本文关键字:windows gcc-mingw 上的 cygwin 作用域 rand      更新时间:2023-10-16

我正在尝试将一些代码从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++,为什么不看看新的随机数库呢。它们是线程安全的、可移植的,并且产生更好的随机结果。这个问题虽然不是一个真正的问题,但仍然包含一些关于如何使用图书馆的有用信息。

如果您没有可用的C++11随机类,Boost也有一个实现。