使用Visual Studio获取time_t的最大值

tun*_*2fs 5 c++ visual-studio visual-c++

我需要让以下代码独立于工作平台:

 timeval tv;
 tv.tv_sec = std::numeric_limits<time_t>::max();
Run Code Online (Sandbox Code Playgroud)

此代码适用于各种Linux OS和Mac OS X.

不幸的是,在windows下,这将返回-1,对于tv.tv_sec.

我当时想过要重新定义time_t,就像这样:

 typedef int time_t;
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为漫画者现在抱怨:

error C2371: 'time_t' : redefinition; different basic types
Run Code Online (Sandbox Code Playgroud)

如何获得这个代码在plattform独立运行的代码?

ron*_*nag 12

tv.tv_sec = std::numeric_limits<decltype(tv.tv_sec)>::max();
Run Code Online (Sandbox Code Playgroud)

替代没有decltype

template<typename T> 
void set_max(T& val){val = std::numeric_limits<T>::max();}

set_max(tv.tv_sec);
Run Code Online (Sandbox Code Playgroud)