如何添加标头增加可移植性? (SYS / time.h中)

时间:2011-10-25 13:04:49

标签: linux posix time.h getrusage rusage

我刚在getrusage手册页中注意到这一行:

  

这些天不需要包括<sys/time.h>,但可以提高可移植性。 (实际上,struct timeval在<sys/time.h>

中定义

什么?由于struct rusage包含struct timeval作为成员,因此sys / resource.h必须包含sys / time.h,否则类型将不完整且无法使用?

这个评论怎么可能有意义?它怎么可能没有必要?可携带性如何得到帮助?

2 个答案:

答案 0 :(得分:2)

这是因为BSD需要它:

  

FreeBSD和OpenBSD之前需要sys / time.h,而不仅仅是time.h   SYS / resource.h中。

有关详细信息,请参阅UNIX可移植性上的page

答案 1 :(得分:2)

一般来说,在C的早期,你必须在头文件B之前手动包含头文件A,这种情况并不少见。也许早期版本的预处理器不能做嵌套包含,或者它可能只是样式(联机帮助页通常直接包含相关结构的头文件)。

“这些天”,sys / resource.h必须包含sys / time.h或重复struct timeval的定义,但不是每个系统都完全遵循标准。