Chinaunix首页 | 论坛 | 博客

9z

  • 博客访问: 35732
  • 博文数量: 6
  • 博客积分: 240
  • 博客等级: 二等列兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-05 16:14
文章分类

全部博文(6)

文章存档

2011年(1)

2009年(5)

我的朋友

分类: C/C++

2009-09-07 19:47:28

int 是平台相关的,它可能是2字节,也可能是4字节。
u_int8_t 是平台无关的,在任何平台下,它都代表8位无符号数。u代表unsigned, int8代表8位(1字节), t是系统数据类型的意思。
 
int 变量的长度一般和机器字长相同,在 32 位机上是 4 字节,在 16 位机上为 2 字节" ,所以一般不同的机型,开始要用sizeof检测,然后用typedef 宏定义才能做到移植性比较高

举例说明:(如果int 为4为)
typedef int int_4;
 
 
u_int8_t一定为8位,u_int16_t一定为16位。
这句话错了。u_int8_t 的长度只是不小于 8 位,并不是一定为 8 位, u_int_t 类似。
 
 
那short类型,long类型,还有float及double类型呢?怎么在不同机器字长的机器上,如何区分short类型,long类型,还有flo ... 都不一定的,这个主要是通过sizeof 先测试一下,为你让你的程序可以移植,一般的做法是通过typedef重新定义一套适合自己的类型,举例如下:
如果你现在的机器,你通过sizeof测试发现 int 是16位 ,long为32位,你可以定义如下:
typedef  int  int16
typedef long int32
typedef ....
...

如果你的程序需要移植到其他的机型,你通过sizeof测试发现此机器的int为32位,long为64位,但short为16位,int为32位这时候,你只需要改变你现有程序的typedef定义,既:
typedef short int16
typedef int int32
可以把typedef放到.h头文件,以后移植只需要改变.h头文件既可
阅读(385) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:vi高级命令

给主人留下些什么吧!~~