|
timeGetTime()로 얻을 수 있는 값은 DWORD로
이는 0 ~ 2^32 milliseconds 범위입니다.
이 값은 0에서 출발해서 49.71일에 최대값이 된 후 다시 0이 됩니다.
이걸 방지하고자 하는 코드인 것 같군요.
이중 님이 쓰신 글 :
: 안녕하세요? 매번 도움에 감사드립니다.
: 회사에 있는 코드를 보다가 이 함수가 이해가 안되어서요...
: 오버플로우 방지 목적으로 하는거 같은데..눈에 잘 안들어오네요..
: 매개변수에는 시간을TimeGetTime()을 넣습니다..
: 설명 부탁드립니다..감사합니다
:
: unsigned long PreventOverflowGetTimeMs(unsigned long precalc)
: {
: double tmpPrecalc = (double)precalc;
: double postcalc = (double)timeGetTime();
:
: if(tmpPrecalc > postcalc) // 증가시간이므로, 이전에 얻은 시간값보다 향후 얻은 시간값이 작으면 오버플로우된 상태다.
: {
: tmpPrecalc = tmpPrecalc - (double)0x100000000;
: }
:
: return (unsigned long)(postcalc - tmpPrecalc);
: }
|