Использование long int
для этих переменных будет работать до года 2038 , и после этого tv_sec
будет переполнено на машинах, где long
равно 4 байта.
timeval должен быть определен как:
The <sys/time.h> header shall define the timeval structure that includes at least the following members:
time_t tv_sec Seconds.
suseconds_t tv_usec Microseconds.
Вы должны заметить, что вместо long
используется тип time_t
, но это также 32-битное представлениев некоторых системах, хотя есть даже 64-битные представления в других системах.Чтобы избежать переполнения, time_t
, вероятно, изменится на 32-разрядное целое число без знака или 64-разрядное.
Именно поэтому некоторые используют unsigned long
, поскольку оно остановит переполнение до 2100+ года.Вместо этого вы должны использовать тип time_t
, и вам не нужно будет думать о том, как долго ваша программа будет работать в будущем.