这个问题类似于以下内容:

convert epoch to time_t

Converting time_t to int

但是我那里还没有我的答案。

如果要获取当前日期/时间,则可以像以下标准示例中一样调用time(0)time(NULL)

// current date/time based on current system
   time_t now = time(0);


我想定义一个函数,该函数将返回time_t并允许客户端在发生错误时传递可选的默认返回值。此外,我想在该“默认”参数上设置默认值。这在我拥有的库中提供了对称性,该库具有跨几种语言的一对一对应部分,因此我不打算重新设计所有库。

我的想法是将默认返回值设置为该纪元。然后,客户可以在理论上轻松评估该收益,并确定某个时期回来的可能性很大(如果不是总是这样),则表明该时期无效。我可以想到一些替代方案,但是没有什么可以替代的,也符合我现有的模式。

有没有一种简短有效的方法可以使我的函数签名的默认值等于纪元?例如

   ...myfunc(...., const time_t &defVal=time(0) );


如果0代表时代而不是当前日期/时间,那将是完美的!

最佳答案

使用0有什么问题? (time_t)0代表纪元本身(如果要查找实际的纪元日期/时间,请将(time_t)0传递给gmtime()localtime())。

time_t myfunc(...., time_t defVal = 0 );


或者,您可以改用(time_t)-1,这不是有效时间,因为time()会在错误时返回(time_t)-1,并且time_t代表自该纪元以来的正秒数。

time_t myfunc(...., time_t defVal = (time_t)-1 );


如果用户不提供自己的默认值,则两种方法都可以为用户提供易于比较的内容。

10-04 15:11