码迷,mamicode.com
首页 > 其他好文 > 详细

这样的类型转换,你用过吗

时间:2014-08-23 23:01:01      阅读:264      评论:0      收藏:0      [点我收藏+]

标签:64位   linux内核   32位   指针   移植   

最近在做64位代码移植,代码中到处充斥着类型转换,到处报编译警告和错误,比如以下使用:

unsigned int ret=0,*p=NULL;

p = (unsigned int *)malloc(sizeof(4));

ret = (unsigned int )p;

以上这段代码,在32位编译系统中没问题,但是在64位编译系统中就会报错,说是类型转换size不一样,因为在64位,所有指针类型全是8个字节,而unsigned int 是4个字节;此时我们可以做如下适配:

ret = (uintptr_t)p;

之所以可以这样做,是因为Linux内核在定义这个类型时已经做了64位和32位区分。



这样的类型转换,你用过吗

标签:64位   linux内核   32位   指针   移植   

原文地址:http://blog.csdn.net/lixiaojie1012/article/details/38781877

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!