转载于: https://blog.csdn.net/sole_cc/article/details/51626845
uint8_t之类
那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为类型/ typedef的缩写,表示它是通过的typedef定义的,而不是其它数据类型。既然它们都不是新的数据类型,只是使用的类型定义给类型起的别名,那为什么需要定义它们了?因为跨平台,不同的平台会有不同的字长,所以利用预编译和类型定义的可以让你最有效的维护你的代码。它们在stdint.h头文件中定义,下面的代码从/usr/include/stdint.h中复制
</ span> <span style =“font-family:Microsoft YaHei; font-size:14px;”> / *由于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; #别的 __延期__ typedef long long int int64_t; # 万一 #万一 / *无符号。* / typedef unsigned char uint8_t; typedef unsigned short int uint16_t; #ifndef __uint32_t_defined typedef unsigned int uint32_t; #define __uint32_t_defined #万一 #if __WORDSIZE == 64 typedef unsigned long int uint64_t; #其他 __延期__ 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
32位系统中长整型为32位,64位系统中长整型为64位
可以从/usr/include/sys/types.h一层查找,最终会找到为ssize_t和为size_t的定义。具体可以参考http://blog.csdn.net/lalor/article/details/7426184
如何判断系统位数
getconf WORD_BIT
getconf LONG_BIT
或者使用uname -a