0

システムのミリ秒単位の時間を取得したい(リアルタイムかどうかは気にしない、できるだけ正確にしたい)。これは良い方法ですか?

#ifdef WIN32
unsigned long long freq;
unsigned long long get_ms_time() {
    LARGE_INTEGER t;
    QueryPerformanceCounter(&t);
    return t.QuadPart / freq;
}
#else
unsigned long long get_ms_time() {
    struct timespec t;
    clock_gettime(CLOCK_MONOTONIC, &t);
    return t.tv_sec * 1000 + t.tv_nsec / 1000000;
}
#endif

この値を signed int にラップするにはどうすればよいですか? これを試してみたところ、次のような負の値が得られました(Linuxでは、Windowsではわかりません):

~ start
-2083002438
~ 15 seconds after..
-2082987440
~ 15 seconds after..
-2082972441

私はこのようなものになります。~ 開始 X ~ 15 秒後.. X + 14998 ~ 15 秒後.. X + 29997

X は正の数です。(出力を正にして増加させたい)

4

1 に答える 1