浅谈int8_t int64_t size_t ssize_t的相关问题(详解)

 更新时间:2020年4月25日 17:32  点击:2127

在代码中经常看到int8_t/int16_t/int32_t/int64_t/uint8_t/size_t/ssize_t,以前对这个问题一直是稀里糊涂的,不明白它们到底是什么数据类型,现在上班了,必须把它弄明白了

uint8_t之类

那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。既然它们都不是新的数据类型,只是使用typedef给类型起的别名,那为什么需要定义它们了?因为跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。

它们在stdint.h头文件中定义,下面的代码从/usr/include/stdint.h中复制

<span style="font-family:Microsoft YaHei;font-size:14px;">

/* There is some amount of overlap with <sys/types.h> as known by inet code */

#ifndef __int8_t_defined
# define __int8_t_defined
typedef signed char       int8_t;
typedef short int        int16_t;
typedef int           int32_t;
# if __WORDSIZE == 64
typedef long int        int64_t;
# else
__extension__
typedef long long int      int64_t;
# endif
#endif

/* Unsigned. */
typedef unsigned char      uint8_t;
typedef unsigned short int   uint16_t;
#ifndef __uint32_t_defined
typedef unsigned int      uint32_t;
# define __uint32_t_defined
#endif
#if __WORDSIZE == 64
typedef unsigned long int    uint64_t;
#else
__extension__
typedef unsigned long long int uint64_t;
#endif</span>

看完上面的代码,对uint8_t等就有了清晰明确的认识了

size_t/ssize_t

关于size_t/ssize_t,着急的同学可以先看结论
size_t       无符号整型      32bit系统上等同于unsigned int        64bit系统上等同于unsigned long int

ssize_t      有符号整型      32bit系统上等同于int                       64bit系统上等同于long int

32bit系统中 long int为32bit,64bit系统中 long int为64bit

可以从/usr/include/sys/types.h一层层查找,最终会找到ssize_t和size_t的定义。

如何判断系统位数

getconf WORD_BIT

getconf LONG_BIT

或者使用uname -a

以上这篇浅谈int8_t int64_t size_t ssize_t的相关问题(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持猪先飞。

[!--infotagslink--]

相关文章

  • 浅谈int8_t int64_t size_t ssize_t的相关问题(详解)

    下面小编就为大家带来一篇浅谈int8_t int64_t size_t ssize_t的相关问题(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-04-25
  • C实现与 uint64_t 相同功能的类

    本文给大家分享的是笔者实现的仿uint64_t的类,可以用在不支持uint64_t的平台上,虽然现在功能还不完善,但是还是分享给大家,也算是给大家一个思路吧。...2020-04-25
  • C/C++中的sizeof运算符和size_t类型的详解

    今天小编就为大家分享一篇关于C/C++中的sizeof运算符和size_t类型的详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...2020-04-25