如何在C中表示time_t类型的未初始化值

rob*_*rob 2 c time-t time.h

我有一个time_t类型变量(来自<time.h>),用于存储故障时间,并希望将其初始化为“空”值,如果没有发生错误,它将是最终值。是否存在将time_t变量设置为某种已知的空值的标准方法?我看到time()如果发生错误,该函数将返回-1,这也许是最好的,但是想知道是否可以像这样将整数值分配给typedef。也许我需要使用这个...?

time_t failTime = (time_t)(-1);

chu*_*ica 5

如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可能是一个doublelong等等。

严格来说,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)