时间结构体struct timeval的使用

#include <sys/time.h>

该头文件的位置在:/usr/include/x86_64-linux-gnu/sys/time.h。事实上,该文件只是引入了#include <bits/types/struct_timeval.h>,并未定义结构体。

(1)struct timeval结构体定义
/usr/include/x86_64-linux-gnu/bits/types/struct_timeval.h

#include <bits/types.h>/* A time value that is accurate to the nearestmicrosecond but also has a range of years.  */
struct timeval
{__time_t tv_sec;              /* Seconds.  */__suseconds_t tv_usec;        /* Microseconds.  */
};

(2)__time_t__suseconds_t宏定义
/usr/include/x86_64-linux-gnu/bits/types.h

#define __SLONGWORD_TYPE        long int
#define __ULONGWORD_TYPE        unsigned long int
/* quad_t is also 64 bits.  */
#if __WORDSIZE == 64
typedef long int __quad_t;
typedef unsigned long int __u_quad_t;
#else
__extension__ typedef long long int __quad_t;
__extension__ typedef unsigned long long int __u_quad_t;
#endif#if __WORDSIZE == 32
# define __SQUAD_TYPE           __quad_t
# define __UQUAD_TYPE           __u_quad_t
/* We want __extension__ before typedef's that use nonstandard base typessuch as `long long' in C89 mode.  */
# define __STD_TYPE             __extension__ typedef
#elif __WORDSIZE == 64
# define __SQUAD_TYPE           long int
# define __UQUAD_TYPE           unsigned long int
/* No need to mark the typedef with __extension__.   */
# define __STD_TYPE             typedef
#else
# error
#endif
#include <bits/typesizes.h>     /* Defines __*_T_TYPE macros.  */__STD_TYPE __TIME_T_TYPE __time_t;      /* Seconds since the Epoch.  */
__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds.  */

gcc标准C语言进行了扩展,但用到这些扩展功能时,编译器会提出警告,使用__extension__关键字会告诉gcc不要提出警告。

(3)__TIME_T_TYPE__SUSECONDS_T_TYPE宏定义
/usr/include/x86_64-linux-gnu/bits/typesizes.h

#ifndef _BITS_TYPES_H
# error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead."
#endif/* See <bits/types.h> for the meaning of these macros.  This file exists sothat <bits/types.h> need not vary across different GNU platforms.  *//* X32 kernel interface is 64-bit.  */
#if defined __x86_64__ && defined __ILP32__
# define __SYSCALL_SLONG_TYPE   __SQUAD_TYPE
# define __SYSCALL_ULONG_TYPE   __UQUAD_TYPE
#else
# define __SYSCALL_SLONG_TYPE   __SLONGWORD_TYPE
# define __SYSCALL_ULONG_TYPE   __ULONGWORD_TYPE
#endif#define __TIME_T_TYPE           __SYSCALL_SLONG_TYPE
#define __SUSECONDS_T_TYPE      __SYSCALL_SLONG_TYPE

#error命令是C/C++语言的预处理命令之一,当预处理器预处理到#error命令时将停止编译并输出用户自定义的错误消息。

struct timeval 结构体使用浅析相关推荐

  1. struct timeval结构体

    struct timeval结构体在time.h中的定义为: struct timeval { __time_t tv_sec;        /* Seconds. */ __suseconds_t ...

  2. struct timeval结构体 以及 gettimeofday()函数

    一.struct timeval结构体 struct timeval结构体在time.h中的定义为: struct timeval { __time_t tv_sec;        /* Secon ...

  3. struct timeval结构体 以及 gettimeofday()函数、struct timespec结构体

    struct timeval结构体 struct timeval结构体在time.h中的定义为: struct timeval { __time_t tv_sec; /* Seconds. */ __ ...

  4. linux系统中struct timeval结构体、struct timezone结构体以及gettimeofday函数

    格林尼治时间.协调世界时 间.世界时间.日光节约时间以及时区等介绍: 格林尼治时间(Greenwich Mean Time,GMT)是指位于英国伦敦郊区的皇家格林尼治天文台当地的标准时间,因为本初子午 ...

  5. timeval结构体的应用

    timeval结构体的简单应用 timeval定义 作为计时器 timeval定义 timeval是Linux系统中定义的用于保存时间的结构体,在time.h中的定义为: struct timeval ...

  6. linux 中 timeval结构体 - Neddy11 - 博客园

    linux 中 timeval结构体 - Neddy11 - 博客园 linux 中 timeval结构体 网上很多人写到,timeval结构解释错误 ************************ ...

  7. struct sk_buff结构体详解

    struct sk_buff是linux网络系统中的核心结构体,linux网络中的所有数据包的封装以及解封装都是在这个结构体的基础上进行. 1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  8. linux sock结构体,struct socket结构体详解

    在内核中为什么要有struct socket结构体呢? struct socket结构体的作用是什么? 下面这个图,我觉得可以回答以上两个问题.  由这个图可知,内核中的进程可以通过使用struct ...

  9. C/C++结构体struct 与结构体数组和枚举型enum的结合使用

    C/C++结构体struct 与结构体数组和枚举型enum的结合使用 #include "stdafx.h" #include <string> #include &l ...

最新文章

  1. Java泛型进阶 - 如何取出泛型类型参数
  2. 大型站点技术架构(七)--站点的可扩展性架构
  3. 在java中arraylist_在Java中将ArrayList添加到另一个ArrayList
  4. 程序员做到年薪60万也不去炫富,背后原因曝光,麻烦做个人吧
  5. 【USACO 1.3】Ski Course Design
  6. Java单例模式实现(线程安全)
  7. python写股票指标_一文看懂KDJ指标及Python实现
  8. 代码创建数据库_表--SqlServer数据库
  9. 【第133期】 游戏策划:给@1的简历分析
  10. 腾讯微博开放平台开发者服务协议 2.1、3.6 解读
  11. linux find查找时间段文件,查找某个时间段的文件和find命令
  12. 最小生成树算法之Kruskal算法
  13. python数据可视化库 动态的_Python数据可视化:Pandas库,要是一行代码就能完成...
  14. 四种方法搞定电脑数据备份
  15. 老毛桃安装U盘 格式化 不可删除的部分
  16. Qlik Sense - 根据配置的记录,实现自动抽取源DB表/视图
  17. 混杂模式和非混杂模式
  18. 奥特斯出席2018重庆市市长国际经济顾问团第十三届年会
  19. 科研工作者简历常用词汇
  20. opencv图片灰度处理的方法和颜色反转

热门文章

  1. (113 “No route to host“)
  2. gcc 生成动态链接库
  3. win10由于启动计算机时页面配置问题,Win10提示"由于启动计算机时出现了页面文件配置问题"(图文)...
  4. 西工大电子服务系统设计复习总结
  5. harris角点检测原理
  6. SwiftUI 新 Alert 弹出窗口圆你文本输入之梦
  7. keil5左边的project窗口打开或者放置原位
  8. 算符优先分析法的简单实现
  9. Spring整合Activemq
  10. 【Kmeans】k均值聚类案例演示