time.h 是 ISO C99 标准日期时间头文件。
sys/time.h 是 Linux系统 的日期时间头文件。
sys/time.h 通常会包含 #include <time.h> 。
编写的代码如果与平台无关的,则需要在代码里 #include <time.h>,但这样使用 time_t 等数据结构的话需要手动
#define __need_time_t
#define __need_timespec
通常如果代码可以是平台相关的,则只需要 #include <sys/time.h> 。
CentOS 7中,time.h 主要包含了time_t、clock_t、struct tm等一些时间相关的类型定义。
sys/time.h 中虽然包含了 #include <time.h>,但是通过 #define __need_time_t 控制了只使用 time.h 中的 time_t 结构定义。
也就是说,如果单独包含了 sys/time.h,是可以使用 time_t 的,但是不能使用 struct tm 和将 tm 作为参数的时间操作函数,比如strftime()等。
到底是包含 time.h 还是 sys/time.h,还是应该依据代码中使用的数据结构和函数来决定。