Итак, есть такая функция:
unsigned tenth_secs(void) { struct timeval tp; struct timezone tzp;
gettimeofday(&tp, &tzp); /* .1 seconds since 1970 almost fills a 32 bit int! So lets subtract off * the time right now */ return ((tp.tv_sec - 331939277) * 10L) + (tp.tv_usec / 100000); }
Вроде бы все понятно - берем текущее время, вычитаем из него немного более десяти лет (это, насколько я понимаю, не важно, т.к. программа далее оперирует разностями значений возвращаемыми этой функцией) т.к. (судя по комментарию) многовастенько это будет даже для беззнакового целого (24 года да еще на десять помноженных), потом добавляем миллисекунды, поделенные на 100000 (т.к. мы и секунды на десять помножили).
Но это все фигня, вы мне объясните зачем писать 10<b>L</b>? В статье "<a hre = "http://www.opennet.ru/docs/RUS/ansi-c/ansi-c-2.html">Описание языка программирования ANSI C. : Элементы С</a>", это называется "форсировать целую константу в тип long". Я бы понял если бы аргумент у какой-нибудь вызываемой функции был long int и вызов происходл таким образом: "function ((long int) 10)" (кстати, это одно и то же, что и "function (10l)"?). Но здесь... не вижу смысла. Прошу помощи.