Как проверить, является ли переменная time_t инициализируется?
На самом деле не существует способа проверить, была ли она инициализирована. Если он не был инициализирован, это может быть любое случайное значение, которое, как оказалось, находится в ячейке памяти. Вы должны запрограммировать так, как вы знаете, он инициализирован.
Если я хочу, чтобы вычислить разность двух time_t вары с функцией difftime, мне нужно вручную выполнить любое здравомыслие проверки перед тем invokation?
Я так не считаю. Так как time_t является целым типом, он всегда находится в правильном состоянии (целые числа не имеют состояния наном или inf, например, плавающие точки), поэтому я не вижу причин, по которым вы получите недопустимый вывод. Я думаю, вы могли бы проверить, что значения time_t имеют смысл с учетом контекста проббэма, который вы решаете. Например, может быть бессмысленно иметь дело со временем 2000 лет назад.
Кроме того, поскольку возвращаемое значение difftime является двойным, как я могу проверить, что это значение больше 0,0?
Используйте инструкцию if. if(dt > 0.0) {...}
Если вы делаете кодирование, вы должны знать, инициализирована ли переменная. Иначе, как общий принцип, проверки здравомыслия всегда являются вашей ответственностью, если вы не полностью контролируете ввод. Чтобы проверить значение больше 0.0, сделайте, если (difftime (t2, t1)> 0.0) {// ваш код}. –