Структура timeval имеет длину 64 бита.Для проекта мне нужно преобразовать это длинное (struct timeval) в два 32-битных блока и поместить каждый блок в свою переменную.Как мне это сделать?Спасибо заранее.
uint32_t* values = &timevalstruct; // depends on endianess uint32_t v1 = values[0]; uint32_t v2 = values[1];
В дополнение к ответу леппи:
union tvs { struct timeval tv; struct ints { uint32_t v1; uint32_t v2; }; }; tvs t; t.tv = timevalstruct; uint32_t v1 = tv.ints.v1; uint32_t v2 = tv.ints.v2;
, если вы не хотите иметь дело с указателями.
struct timeval tv; ... uint32_t seconds = tv.tv_sec; uint32_t micros = tv.tv_usec;
Итак, разделены на 32-разрядные целые числа.
См. Это: http://linux.die.net/man/2/gettimeofday
Можно ли использовать поля tv_sec и tv_usec структуры timeval?