glibc之数据类型定义分析

glibc中数据类型的定义解析
本文深入分析了glibc中数据类型的定义,主要涉及/usr/include/bits下的wordsize.h、types.h和typesizes.h文件。wordsize.h定义了机器字的大小,types.h根据机器字长定义了各种数据类型,如__SQUAD_TYPE、__UQUAD_TYPE等。在32位系统中,64位数据类型可能需要使用结构体表示。typesizes.h则定义了如__UID_T_TYPE、__GID_T_TYPE等基础类型。通过这些文件,可以理解如何在不同平台上保持类型定义的一致性。

  本文主要涉及到的库文件位于/usr/include/bits目录下,文件包括wordsize.h,types.h,typesizes.h 等文件。

  wordsize.h中主要定义了当前机器的字大小。内容如下:

  ...

  #define __WORDSIZE  32

  ...

 

  这里的宏应该是安装系统的时候,确定的机器字的大小,然后才生成对应的宏。这个宏会在types.h中作为判定条件,从而定义相应数据类型。我们可以看下types.h文件有如下内容:

 

   99 #define __S16_TYPE      short int
100 #define __U16_TYPE      unsigned short int
101 #define __S32_TYPE      int
102 #define __U32_TYPE      unsigned int
103 #define __SLONGWORD_TYPE    long int
104 #define __ULONGWORD_TYPE    unsigned long int

//以上类型定义与机器字长度无关
105 #if __WORDSIZE == 32
106 # define __SQUAD_TYPE       __quad_t
107 # define __UQUAD_TYPE       __u_quad_t
108 # define __SWORD_TYPE       int
109 # define __UWORD_TYPE       unsigned int
110 # define __SLONG32_TYPE     long int
111 # define __ULONG32_TYPE     unsigned long int
112 # define __S64_TYPE     __quad_t
113 # define __U64_TYPE&nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值