cygwin で Linux から Windows にコードを移植しようとしています。「rand_r がこのスコープで宣言されていません」という奇妙なエラーが見つかりました。gcc 4.8.1 を x86_64-w64-mingw32 として使用していますが、その検索パス (-v オプション) で正しいディレクトリを検索します。ヘッダー ファイルは適切にインクルードされます。この問題を解決するためのアイデアを探しています。私が欠落しているため、この問題が発生しているという cygwin に関する事実はありますか? gccが実際に必要なファイルに触れているかどうかを確認する方法はありますか?
1 に答える
The rand_r
function is considered thread safe, compared to the standard rand
function. See man 3 rand_r.
One option is to implement rand_r
yourself by wrapping a call to rand
. This may or may not be desirable, and as the manual states, rand_r
is a fairly weak pseudo-random number generator anyway.
Seeing as you're using C++, why not take a look at the new random number libraries available. They are thread safe, portable, and produce much better random results. This question, while closed as not a real question, still contains some useful information on how to use the library.
If you don't have the C++11 random classes available, Boost also has an implementation.