获取系统时间的奇怪方法

时间:2018-01-18 13:08:25

标签: c

我在项目中找到了这个宏:#define OsixGetSysTime(a) (*a = *a)

调用
VOID
UtlGetTime (tUtlTm * tm)  /* tm is a struct that was memset to 0 */
{
    UINT4               u4Ticks;

    OsixGetSysTime (&u4Ticks);
    u4Ticks -= gu4TicksCorr; // gu4TicksCorr is global value
    UtlGetTimeForTicks (u4Ticks, tm);
}

这是UtlGetTimeForTicks

的开始
VOID
UtlGetTimeForTicks (UINT4 u4Ticks, tUtlTm * tm)
{
    UINT4               u4ElapsedSecs;
    UINT4               u4DaysInYear;
    UINT4               u4Days;
    UINT4               u4Leap;
    UINT4               u4Month;
    UINT4               u4Secs;
    tUtlTm              TmBuf;

    u4ElapsedSecs = u4Ticks / gu4Stups;

如您所见,该奇怪变量用于其他计算。我不确定我能透露太多这段代码:(

这用于许多有助于操纵系统时间的函数。这是否做了除了不需要的任务以外的事情?

1 个答案:

答案 0 :(得分:0)

发现它! (经过广泛搜索)

该项目的功能与Jean-FrançoisFabre评论的功能非常相似,但邪恶的日食却向我展示了这个奇怪的宏:

UINT4 OsixGetSysTime (tOsixSysTime * pSysTime)
{ 
   clock_t CurTicks;
   UINT4 u4TicksPerStup;
   CurTicks = times (NULL); 
   *pSysTime = (CurTicks - gStartTicks) * gu4Stups / sysconf(_SC_CLK_TCK); 
   return (OSIX_SUCCESS); 
}

我确信代码编译的是函数,而不是宏(因为它与一致的系统时间一起工作),这让我想知道为什么eclipse指向宏,但无论如何,神秘解决了。谢谢大家