tardan hacienda dinero devuelto devolver declaracion cuanto aun c time posix

hacienda - ¿Puede el tiempo(NULL) devolver una falla?



cuanto tardan en devolver el dinero de la declaracion 2017 (5)

¿Puede el tiempo (NULL) devolver una falla?

No. El estándar C dice que

C11: 7.27.2.4:

La función de tiempo devuelve la mejor aproximación de la implementación al tiempo calendario actual. El valor (time_t)(-1) se devuelve si el tiempo del calendario no está disponible.

¿La función time_t time(time_t *t) devolver el fallo si el argumento pasado es siempre NULL?

Si la llamada es el time(NULL) , ¿aún necesitamos verificar el valor de retorno?

El único código de error documentado es EFAULT, que se refiere a que el puntero no es válido.


(No se considera la funcionalidad del modo degradado POSIX)

Si el subsistema de reloj en tiempo real subyacente tenía un fallo de hardware como la pérdida de la integridad del reloj (batería) cuando la unidad estaba apagada en un sistema independiente, el valor de retorno del time() podría sin duda ser (time_t) -1 . En ese caso, no importa qué pasó en time_t* .


En el estándar C, el time() puede regresar (time_t)(-1) si "el tiempo del calendario no está disponible". En el estándar de 1999, por ejemplo, eso está en la Sección 7.23.2.4, párrafo 3.

Aunque esa redacción es menos que específica, sugeriría que representa una condición de error. Es de suponer que una implementación puede regresar (time_t)(-1) si no puede acceder al reloj del sistema, no puede interpretar con sensatez los datos que recibe, etc.

La respuesta de R describe cuál es el caso para la especificación de posix.


Revisé RHEL, SLES y UBTU; la página del hombre 2 produce la misma cosa (relevante):

time() returns the time since the Epoch (00:00:00 UTC, January 1, 1970), measured in seconds.

If t is non-NULL, the return value is also stored in the memory pointed to by t.

De todos modos, volviendo a las preguntas originales

  • Q0 : ¿Puede alguna vez la función time_t time(time_t *t) devolver la falla si el argumento pasado es siempre NULL?

    • A / R0 : , si ocurrieron algunos eventos muy especiales (memoria llena, y así sucesivamente, ...)
  • Q1 : si la llamada es el tiempo (NULL), ¿todavía necesitamos verificar el valor de retorno?

    • A / R1 : la respuesta real es "NO", no es necesario; el hecho de que el func pueda devolver algo relevante es una historia diferente. Después de todo, ¿por qué llamar a un func, si no hay necesidad de hacerlo?
  • Q2 : el único código de error documentado es EFAULT , que se refiere a que el puntero no es válido.

    • No tienes nada que ver con los códigos inválidos; como dijiste que estás pasando NULL , entonces no hay problema.

Sí. time tiene un caso documentado de falla :

La función de tiempo () puede fallar si:

[EOVERFLOW] La cantidad de segundos desde que Epoch no cabe en un objeto de tipo time_t.

Fuente: http://pubs.opengroup.org/onlinepubs/9699919799/functions/time.html

Espere que esto suceda en la práctica en aproximadamente 22 años, tan pronto como sea posible, y no en sistemas de 64 bits o de 32 bits que utilicen un time_t 64 bits.

Además, la presencia de cualquiera fallará o puede fallar. Los casos también permiten errores definidos por la implementación, aunque su existencia sería un serio defecto de calidad de implementación.

EFAULT es un problema / no existe porque solo ocurre cuando su programa tiene un comportamiento indefinido.

Entonces, a pesar de todo esto, en el mundo real, el time no va a fallar.