2011-10-25 15 views
2

我只注意到這條線在getrusage手冊頁:如何添加標題增加可移植性? (SYS/time.h中)

包括<sys/time.h>不需要這些天,但增加了便攜性。 (事實上​​,timeval結構中<sys/time.h>定義)

什麼?由於struct rusage包含struct timeval作爲成員,當然sys/resource.h必須包含sys/time.h或類型將不完整且不可用?

怎麼會這樣評論曾經做出有意義嗎?它怎麼可能沒有必要?可移植性如何得到幫助?

回答

2

一般來說,在C的早期,你不得不手動在頭文件B之前手動包含頭文件A,也許早期版本的預處理程序不能做嵌套包含,或者它可能是隻是風格(manpages通常會直接包含相關結構的頭文件)。

「這些天」,SYS/resource.h中必須要麼包括SYS/time.h中或重複timeval結構的定義,但不是每一個系統完全遵循標準。

2

這是因爲BSD的要求是:

FreeBSD和OpenBSD的需要SYS/time.h中,不只是time.h中,前 SYS/RESOURCE.H。

在UNIX的可移植性上看到這個page的細節。

+0

那麼爲什麼標題的BSD版本不包含他們需要的東西呢? – spraff

+0

不知道說實話 – trojanfoe