colorful

zc qq:1337220912

 

补习 size_t

size_t是标准C库中定义的,应为unsigned int。
  数据类型"socklen_t"和int应该具有相同的长度。否则就会破坏 BSD套接字层的填充.POSIX开始的时候用的是size_t, Linus Torvalds(他希望有更多的人,但显然不是很多) 努力向他们解释使用size_t是完全错误的,因为在64位结构中 size_t和int的长度是不一样的,而这个参数(也就是accept函数的第三参数)的长度必须和int一致,因为这是BSD套接字接口标准.最终POSIX的那帮家伙找到了解决的办法,那就是创造了一个新的类型"socklen_t".Linux Torvalds说这是由于他们发现了自己的错误但又不好意思向大家伙儿承认,所以另外创造了一个新的数据类型 。
  在C++中,设计 size_t 就是为了适应多个平台的 。size_t的引入增强了程序在不同平台上的可移植性。size_t是针对系统定制的一种数据类型,一般是整型,因为C/C++标准只定义一最低的位数,而不是必需的固定位数。而且在内存里,对数的高位对齐存储还是低位对齐存储各系统都不一样。为了提高代码的可移植性,就有必要定议这样的数据类型。一般这种类型都会定义到它具体占几位内存等。当然,有些是编译器或系统已经给定义好的。经测试发现,在32位系统中size_t是4字节的,而在64位系统中,size_t是8字节的,这样利用该类型可以增强程序的可移植性。
  一个基本的无符号整数的C / C + +类型。 它是sizeof操作符返回的结果类型。 该类型的大小是选择,因此,它可以存储在理论上是可能的任何类型的数组的最大大小。 在32位系统为size_t将采取32位和64位 - 64位。 换句话说,一个指针可以被安全地放进为size_t类型(一个例外是类的函数指针,但是这是一个特殊的情况下)。 为size_t类型通常用于循环,数组索引,大小的存储和地址运算。 虽然为size_t可以存储一个指针,它是更好地使用另一个unsinged整数类型uintptr_t形式,目的(它的名字反映了它的能力)。 在某些情况下,使用为size_t类型是更有效,比使用更无符号类型的程序员习惯性安全。
  size_t是一个无符号整数memsize基地型的C / C + +语言的标准库中定义的。 此类型在C头文件stddef.h,在文件cstddef中所述的C + +。 位于头文件stddef.h中定义的类型在全局命名空间,而cstddef地方在命名空间std为size_t类型。 由于C语言的标准头文件stddef.h纳入的兼容性的目的,在这些方案中,您可以在全局命名空间的类型的C + +程序(:为size_t,为size_t)和命名空间std(STD::为size_t)。

============================
主要是为了可移植用的
typedef unsigned long size_t;
typedef short pid_t;
在其他平台上有可能是 typedef unsigned int/long long size_t,         typedef long/int pid_t等等,,
这样就可以直接用size_t pid_t定义变量了,
解释以下pid_t的用法:
主要用在linux c下进程管理中的,用它来表示进程的id类型,即表示进程表的索引(进程表里是进程id类型)

posted on 2012-03-01 20:38 多彩人生 阅读(476) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


导航

统计

常用链接

留言簿(3)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜