10

一部の Unix コードを Windows Visual Studio 2010 に移植しています。次の行に遭遇しました。

gmtime_r(&now, &tm_time);

gmtime_r() は標準の Unix 関数であることがわかりましたが、Windows で同等の関数を見つけたいと思っています。time.h でかなりの数の gmtime 関数を見つけましたが、どれが同等であるかを見つけるのに苦労しています。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

14

gmtime_r()は、gmtime()のスレッドセーフバージョンです。gmtime()のMSVC実装はすでにスレッドセーフであり、返されたstructtm*はスレッドローカルストレージに割り当てられます。

同じスレッドで関数が複数回呼び出され、返されたポインタが格納されている場合でも、問題が発生することはありません。代わりにgmtime_s()を使用できます。gmtime_r()に最も近いが、引数が逆になっている;)

于 2012-08-21T18:19:34.960 に答える