Как добавление заголовка может повысить переносимость?(SYS / time.h) - PullRequest
2 голосов
/ 25 октября 2011

Я только что заметил эту строку в справочной странице getrusage :

Включение <sys/time.h> в наши дни не требуется, но увеличивает переносимость.(Действительно, структура timeval определена в <sys/time.h>)

Что?Поскольку struct rusage содержит struct timeval в качестве члена, конечно, sys / resource.h должен включать sys / time.h, иначе тип будет неполным и непригодным для использования?

Как этот комментарий мог иметь смысл?Как это могло быть не нужно?Как можно было помочь переносимости?

Ответы [ 2 ]

2 голосов
/ 25 октября 2011

В целом, в первые годы существования C нередко приходилось вручную включать файл заголовка A перед файлом заголовка B. Возможно, ранняя версия препроцессора не могла делать вложенные включения, или, возможно, это было простостилистический (man-страницы часто напрямую включают заголовочные файлы для соответствующих структур).

«В эти дни», sys / resource.h должен либо включать sys / time.h, либо повторять определение struct timeval, но не каждыйСистема полностью соответствует стандарту.

2 голосов
/ 25 октября 2011

Это потому, что этого требуют BSD:

FreeBSD и OpenBSD нужны sys / time.h, а не просто time.h, перед тем SYS / resource.h.

Подробнее см. На этой странице о переносимости UNIX.

...