01.C语言进阶——类型重定义typedef (1)

C语言之类型重定义typedef (1)

第一个作用是 画繁为简
给比较冗长的类型名字起个外号,则能少打几个字,从另外意义来说是程序员的偷懒行为,也是促进进步,提升开发效率。从功能方面讲typedef和linux中的alias命令有点类似。

第二个作用是 平台开发增强可移植性

因为不同平台相同的数据类型占用的字节数不一样,也就意味着相同的数据类型会有不同的数据表示范围。

比如在16位平台上一个int 占用的是2个字节,而在32位平台上一个int占用的是4个字节,数据表示的范围都是完全不一样的。

如果在16位平台上我们用int定义了所有的变量,那么到了32平台上这些用int定义的变量我们都得考量一下是否合适,这个工作量就很大了,这就不叫移植了,快叫重构了。

在16位平台上我们重新定义一个类型

typedef int int_16;

在16位平台上今后就不用int定义变量了,全部用int_16定义变量

把这个16位平台平台移植到32位平台上再加上这句行不行呢?

typedef int int_16;

肯定不行啊,要改一改的,16位平台上的int_16占用的字节数是2个字节,表示的数据范围是32768 ~ 32767

那么在32位平台上,什么数据类型是占用2个字节,表示的数据范围也是32768 ~ 32767呢 ?是short int 啊

所以要把typedef int int_16; 改成typedef short int int_16;

这样在32位系统中所有的被移植过来的int_16变量不需要修改就能满足要求了。

如果这个16位程序要移植到64位系统中,应该怎么修改呢?

把typedef int int_16;改成typedef short int int_16;就可以了,因为64位系统中short int 占用的字节树和数据表示范围是和16位系统中的int是一样的。

总之一句话,如果程序有移植性的考虑,那么一定要用typedef定义自己的新数据类型,这个新数据类型占用几个字节,完全看你自己的考虑,然后把代码移植到新平台

只需要把typedef 新类型替换成和当前平台占用字节数相同且数据表示范围相同的数据类型就可以了。
posted @ 2021-06-15 12:11  skyuz  阅读(589)  评论(0编辑  收藏  举报