加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

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

发布时间:2021-01-02 05:03:34 所属栏目:创业 来源:网络整理
导读:在代码中常常看到int8_t/int16_t/int32_t/int64_t/uint8_t/size_t/ssize_t,早年对这个题目一向是稀里糊涂的,不大白它们到底是什么数据范例,此刻上班了,必需把它弄大白了 uint8_t之类 那么_t的意思到底暗示什么?详细的官方谜底没有找到,不外我认为有个

在代码中常常看到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的相干题目(详解)就是小编分享给各人的所有内容了,但愿能给各人一个参考,也但愿各人多多支持编程小能力。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读