19

これら2つの機能の違いはどれですか? MinGW 4.8.0 を使用しています。

私はそれgmtime_rがスレッドセーフであることを知っています(ただし、同じスレッドから複数回呼び出された場合は安全ではありません)が、理解できませんgmtime_s

4

2 に答える 2

20

違いは、それgmtime_r(3)標準の SUSv2 関数であることです。gmtime_r()Windows 環境で最も近いのはgmtime_s()で、引数が逆になっています。

  • gmtime_r(const time_t*, struct tm*)
  • gmtime_s(struct tm*, const time_t*)

基本的に、どちらも時間値をtm構造体に変換します。gmtime_r次に、この構造体へのポインターを返します (NULL失敗した場合)。一方、成功した場合は をgmtime_s返し、失敗した場合は a を返します。0errno_t

上記のtm両方のドキュメントからわかるように、構造には次の本体があります。

struct tm {
    int tm_sec;         /* seconds */
    int tm_min;         /* minutes */
    int tm_hour;        /* hours */
    int tm_mday;        /* day of the month */
    int tm_mon;         /* month */
    int tm_year;        /* year */
    int tm_wday;        /* day of the week */
    int tm_yday;        /* day in the year */
    int tm_isdst;       /* daylight saving time */
};
于 2013-09-27T13:31:41.583 に答える