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版本的头文件不能简单地包含它们需要的内容呢?