【问题标题】:How can adding a header increase portability? (sys/time.h)添加标头如何增加可移植性? (系统/时间.h)
【发布时间】:2011-12-14 22:29:26
【问题描述】:

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

现在不需要包含<sys/time.h>,但增加了可移植性。 (确实,struct timeval 定义在<sys/time.h>

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

这个评论怎么可能有意义?怎么可能从来没有必要?可移植性如何得到帮助?

【问题讨论】:

    标签: linux posix time.h getrusage rusage


    【解决方案1】:

    一般来说,在 C 的早期,您必须在头文件 B 之前手动包含头文件 A 并不少见。也许早期版本的预处理器无法进行嵌套包含,或者可能只是风格(手册页通常会直接包含相关结构的头文件)。

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

    【讨论】:

      【解决方案2】:

      这是因为 BSD 需要它:

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

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

      【讨论】:

      • 那么为什么 BSD 版本的头文件不简单地包含他们需要的内容呢?
      猜你喜欢
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多