在代码中经常看到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_definedtypedef signed char int8_t;typedef short int int16_t;typedef int int32_t;# if __WORDSIZE == 64typedef 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_definedtypedef unsigned int uint32_t;# define __uint32_t_defined#endif#if __WORDSIZE == 64typedef unsigned long int uint64_t;#else__extension__typedef unsigned long long int uint64_t;#endif |
看完上面的代码,对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
126邮箱极速登录-网易邮箱126免费邮箱官网登录入口高速加载
在线photoshop网页版直达入口-photoshop在线网页版官方网址
163免费邮箱登录入口-官网直达 163免费邮箱企业邮箱-一键登录入口
volumeshaderbm性能测试入口-volumeshaderbm最新测试链接地址2026
bilibili官方平台入口-bilibili视频官网首页一键直达链接
海棠书屋文学城网页版官网入口-2026最新直达链接一键分享
孢子2生物进化中文版(Spores)
孢子2生物进化中文版让我们来做一回疯狂的博士,打造一个属于自
叫我万岁爷九游官方版
叫我万岁爷带你体验当换地点感觉,全新的模拟手游大作让你开始一
梦回凤歌
梦回凤歌手游中你将步入古代的宫廷纷争之中,本想度过美好幸福的
洋果子店rose最新版本
洋果子店最新版是一款十分容易让人垂涎的开店经营类手游。游戏玩
明日大亨最新版
明日大亨手游,一个非常经典有趣的模拟经营类型的商战手游,在游