八一八C语言中那些稀奇古怪的类型!
来源:互联网 发布:excel数据上下颠倒 编辑:程序博客网 时间:2024/05/16 01:02
为了保证可移植性,C语言重定义了许多类型,比如著名的ssize_t,这个看起来很吓人的类型其实就是个int(64位下是long),这篇博文就是来八一八这些看起来很吓人的类型。由于这种类型有很多,本人可能无法一下子写完,故会持续更新!
首先就来说说ssize_t和size_t这对栾生兄弟吧,首先说结论,ssize_t是定义一个有符号的字,而size_t是定义一个无符号的字,字的长度根据系统位数不同会不同(32位下是4个字节,64位下是8个字节)。那么它们是如何定义的呢?且看俺慢慢分解:
第一步,在/usr/include/sys/types.h里面定义了这个,
第二步,在/usr/include/bits/types.h里面定义了这个,
这里那个__STD_TYPE其实就是typedef。
第三步,在/usr/include/bits/types.h里面定义了这个,
第四步,在/usr/include/bits/types.h里面定义了这个,
最后,绕了这么一个大圈回来,才发现ssize_t原来就是int啊!最后,我简单上一张图来总结一下它这个转换过程:
而size_t则没有那么麻烦了,都在/usr/lib/gcc/i686-redhat-linux/4.4.4/include/stddef中定义了,其转换过程如下:
接下来要说的一个则是pid_t这个类型,这个就是进程号的一个标识,但也是转换了好多遍,其转换过程如下:
/usr/include/bits/types.h(101行):#define __S32_TYPE int/usr/include/bits/typesizes.h(40行):#define __PID_T_TYPE __S32_TYPE/usr/include/bits/types.h(143行):__STD_TYPE __PID_T_TYPE __pid_t;/usr/include/sys/types.h(99行):typedef __pid_t pid_t;总结起来就是这个样子:
uid_t和gid_t,这两种类型是为了标识用户id和组id的!它们的转换过程如下(我列的这些文件都是位于/usr/include这个目录下的):
sys/types.h(81):typedef __uid_t uid_t;bits/types.h(135):__STD_TYPE __UID_T_TYPE __uid_tbits/typesizes.h(31):#define __UID_T_TYPE __U32_TYPEsys/types.h(81):typedef __gid_t gid_t;bits/types.h(135):__STD_TYPE __GID_T_TYPE __gid_tbits/typesizes.h(31):#define __GID_T_TYPE __U32_TYPEbits/types.h(102):#define __U32_TYPE unsigned int
到了今天我才明白,原来这些类型都是posix标准定义的,而前面有两个下划线的类型表示属于系统内核定义的类型!所以我感觉这篇博文就是由于我的孤陋寡闻而闹的一个笑话!所以呢,也不好意思继续更新了!还请列位看官付之一笑吧!
- 八一八C语言中那些稀奇古怪的类型!
- 八一八招聘的那些事儿
- 八一八那些男票脑洞大开时送的奇葩礼物
- 八一八招聘的那些事儿
- 八一八招聘的那些事儿
- 八一八公司那些不专业的人和事
- C语言的那些事儿之八
- 八一八讨厌的字符串
- 八一八我的求职之路~
- jQuery中‘稀奇古怪’的写法【收集】
- C语言(八)--变量的存储类型
- 来八一八程序员
- 八一八快速排序
- 八一八 The Social Network的小细节
- 【八一八系列】之近年来很热门的HTML5技术
- 八一八我亲身逃离传销的经历
- c 语言里 类型转换那些事儿
- c 语言里 类型转换那些事儿
- 直方图的均衡、直方图的反向投影算法,opencv鼠标和键盘处理事件
- iOS-浅谈runtime运行时机制02-runtime简单使用
- [你必须知道的异步编程]C# 5.0 新特性——Async和Await使异步编程更简单
- hdu4046 不错的线段树单点更新
- shell编程总结
- 八一八C语言中那些稀奇古怪的类型!
- Image 相关的类
- IsWow64并不能用来检测是否是Windows 32bit系统还是64bit系统
- 如果此程序没有正确安装,请选用与此版本兼容的设置重新安装”C#程序的解决办法
- Android CTS兼容性测试
- Qt For Android
- debian修改apt-get安装源
- 正则表达式30分钟入门教程
- 侧边栏交互的利弊