2011-10-25 10 views
2

(SYS/TIME.H):ヘッダーを追加すると、移植性が向上します。私はちょうど<a href="http://linux.die.net/man/2/getrusage" rel="nofollow">getrusage</a> manページにこの行を気づい

含む<sys/time.h>は、これらの日を要しますが、移植性を高めることはありません。 (実際にstruct timevalは<sys/time.h>で定義されています)

何ですか? struct rusageにはメンバーとしてstruct timevalが含まれているので、必ずsys/resource.hにsys/time.hをインクルードするか、型が不完全で使用できなくなるでしょうか?

どのようにこのコメントが理にかなっていますか?どのようにこれまで必要なかったことができますか?どのように移植性がこれまでに助けられたでしょうか?

答えて

2

一般に、ヘッダファイルBの前に手動でヘッダファイルAを含める必要があるのは、Cの初期段階では珍しくありませんでした。プリプロセッサの初期バージョンではネストされたインクルードを実行できませんでした。文法(マンページはしばしば関連する構造のヘッダファイルを直接インクルードするでしょう)。

"最近" sys/resource.hにはsys/time.hを含めるか、struct timevalの定義を繰り返す必要がありますが、すべてのシステムが完全に標準に準拠するわけではありません。

2

BSDさんは、それを必要とするからです。

FreeBSDやOpenBSDのは SYS/RESOURCE.H前に、ちょうどTIME.H、SYS/TIME.Hをする必要はありません。

は、詳細については、UNIXポータビリティにこのpageを参照してください。

+0

なぜBSD版のヘッダーには必要なものだけが含まれていますか? – spraff

+0

正直であることを知らない – trojanfoe

関連する問題

 関連する問題