timeval.h

来自「在Linux下做的QuadTree的程序」· C头文件 代码 · 共 117 行

H
117
字号
/* * timeval.h    1.3 2003/01/14 * * Defines gettimeofday, timeval, etc. for Win32 * * By Wu Yongwei * */#ifndef _TIMEVAL_H#define _TIMEVAL_H#ifndef WIN32_LEAN_AND_MEAN#define WIN32_LEAN_AND_MEAN#endif#include <winsock2.h>#include <time.h>#if defined(_MSC_VER) || defined(__BORLANDC__)#define EPOCHFILETIME (116444736000000000i64)#else#define EPOCHFILETIME (116444736000000000LL)#endifstruct timezone {    int tz_minuteswest; /* minutes W of Greenwich */    int tz_dsttime;     /* type of dst correction */};#if !defined(_WIN32_WCE)__inline int gettimeofday(struct timeval *tv, struct timezone *tz){    FILETIME        ft;    LARGE_INTEGER   li;    __int64         t;    static int      tzflag;    if (tv)    {        GetSystemTimeAsFileTime(&ft);        li.LowPart  = ft.dwLowDateTime;        li.HighPart = ft.dwHighDateTime;        t  = li.QuadPart;       /* In 100-nanosecond intervals */        t -= EPOCHFILETIME;     /* Offset to the Epoch time */        t /= 10;                /* In microseconds */        tv->tv_sec  = (long)(t / 1000000);        tv->tv_usec = (long)(t % 1000000);    }    if (tz)    {        if (!tzflag)        {            _tzset();            tzflag++;        }        tz->tz_minuteswest = _timezone / 60;        tz->tz_dsttime = _daylight;    }    return 0;}#else__inline int gettimeofday(struct timeval *tv, struct timezone *tz){	SYSTEMTIME      st;    FILETIME        ft;    LARGE_INTEGER   li;    TIME_ZONE_INFORMATION tzi;    __int64         t;    static int      tzflag;    if (tv)    {		GetSystemTime(&st);		SystemTimeToFileTime(&st, &ft);        li.LowPart  = ft.dwLowDateTime;        li.HighPart = ft.dwHighDateTime;        t  = li.QuadPart;       /* In 100-nanosecond intervals */        t -= EPOCHFILETIME;     /* Offset to the Epoch time */        t /= 10;                /* In microseconds */        tv->tv_sec  = (long)(t / 1000000);        tv->tv_usec = (long)(t % 1000000);    }    if (tz)    {           GetTimeZoneInformation(&tzi);		        tz->tz_minuteswest = tzi.Bias;		if (tzi.StandardDate.wMonth != 0)        {			tz->tz_minuteswest += tzi.StandardBias * 60;        }        if (tzi.DaylightDate.wMonth != 0)        {            tz->tz_dsttime = 1;        }        else        {            tz->tz_dsttime = 0;        }    }    return 0;}#endif /* _WIN32_WCE */#endif /* _TIMEVAL_H */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?