Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 添加标头如何提高可移植性?(sys/time.h)_Linux_Posix_Time.h_Getrusage_Rusage - Fatal编程技术网

Linux 添加标头如何提高可移植性?(sys/time.h)

Linux 添加标头如何提高可移植性?(sys/time.h),linux,posix,time.h,getrusage,rusage,Linux,Posix,Time.h,Getrusage,Rusage,我刚注意到手册页上有一行: 现在不需要包含,但增加了可移植性。(实际上,struct timeval是在中定义的) 什么?由于struct rusage包含struct timeval作为成员,sys/resource.h必须包含sys/time.h,否则类型将不完整且不可用 这句话怎么会有意义呢?怎么可能没有必要呢?可移植性是如何得到帮助的?这是因为BSD需要它: FreeBSD和OpenBSD需要sys/time.h,而不仅仅是time.h sys/resource.h 有关详细信息,请参见

我刚注意到手册页上有一行:

现在不需要包含
,但增加了可移植性。(实际上,struct timeval是在
中定义的)

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


这句话怎么会有意义呢?怎么可能没有必要呢?可移植性是如何得到帮助的?

这是因为BSD需要它:

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


有关详细信息,请参见UNIX可移植性的介绍。

一般来说,在早期的C语言中,必须在头文件B之前手动包含头文件A的情况并不少见。可能是早期版本的预处理器无法执行嵌套包含,或者可能只是风格上的问题(手册页通常直接包括相关结构的头文件)


“现在”,sys/resource.h必须包含sys/time.h或重复struct timeval的定义,但并非每个系统都完全遵循该标准。

那么,为什么BSD版本的头文件不能简单地包含它们需要的内容呢?