需求

c/cpp 在一些嵌入式应用中,使用 time() 时,编译会报警告 warning: _gettimeofday is not implemented and will always fail

解决

这个警告的原因其实是因为,嵌入式环境中,有些是没有实现 _gettimeofday(), 所以就需要自己来实现这个函数,实现从 rtc 时间到秒之间的转换。

int _gettimeofday(struct timeval *tv, struct timezone *tz)
{
      Rtc::Date date;
      Rtc::Time time;
      Rtc::GetRtcValue(date, time);
      tm time_tm {time.second, time.minute, time.hour, date.day, date.month - 1, date.year - 1900};
      time_t time_second = mktime(&time_tm);

      tv->tv_sec = time_second;
      tv->tv_usec = 0;

//	tz->tz_minuteswest = 480;
//	tz->tz_dsttime = DST_NONE;

      return 0;
}

参考