我有一个time_t类型变量(来自<time.h>),用于存储故障时间,并希望将其初始化为“空”值,如果没有发生错误,它将是最终值。是否存在将time_t变量设置为某种已知的空值的标准方法?我看到time()如果发生错误,该函数将返回-1,这也许是最好的,但是想知道是否可以像这样将整数值分配给typedef。也许我需要使用这个...?
time_t failTime = (time_t)(-1);
如OP所指,失败time()(以及其他标准C库函数)的结果为(time_t)(-1),因此将其初始化为该“失败”值至少是合理的time_t。
// Just like OP
time_t failTime = (time_t)(-1);
Run Code Online (Sandbox Code Playgroud)
time_t是实类型,“整数和实浮点类型统称为实类型 ”。 time_t可能是一个double,long等等。
严格来说,time_t可以将有效时间编码为(time_t)(-1),但是对于各种函数而言,这不能与错误返回区分开。
考虑到可能的编码范围很广,并且考虑从1970年1月1日起使用整数秒的通用做法(time_t)(-1)是一个合理的选择。
更加鲁棒的(或简单的解决方案)会将标志与时间变量配对以指示其正确性。例:
struct time_pedantic {
time_t t;
bool valid;
}
Run Code Online (Sandbox Code Playgroud)